Вы не указали образец $mystring
, который был бы полезен.
Как написано, это регулярное выражение заменяет один и только один символ в $mystring
. В частности, ваш характерный класс включает персонаж карата (^
) в самом начале. В любом Perl-совместимом движке регулярных выражений (из которого PHP один) это указывает не на эти вещи (см. character classes для получения дополнительной информации). Таким образом, ваше выражение, по существу, зачистки все, что не:
- строчной буквы между а и г
- прописной буквы между А и Z
- Цифра от 0 до 9
- периода
- Вопросительный знак
- восклицательный знак
- пробелами символов
Символ черты не один из указанных выше, поэтому он подбирается и заменяется.
Ваше предположение о «сквозной» тире черт, поскольку вы написали это, верно. Символ тире - это один из 4 специальных символов в классе символов, и он используется для обозначения диапазона символов.
Благодарим вас за прекрасное объяснение. :) – osakagreg