powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] странная работа регулярных выражений
6 сообщений из 6, страница 1 из 1
[PHP] странная работа регулярных выражений
    #38556718
Vasiliy_Kashkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Необходимо написать регулярное выражение, чтобы удалить из строки все символы, кроме латинских букв, цифр, дефиса и нижнего подчёркивания.

Написал следующий код:
$str_input="one__two__2140-00E;";
echo ereg_replace("[^a-zA-Z0-9\-\_]","",$str_input);

всё отработало правильно, за исключением того, что удалился дефис между 2140 и 00, результат:
one__two__214000E

если в регулярном выражении поменять \- и \_, всё отработает полностью правильно:
ereg_replace("[^a-zA-Z0-9\_\-]","",$str_input)
результат: one__two__2140-00E

Но почему так происходит? Какая разница, в каком порядке перечислены символы?
Объясните пожалуйста чайнику...
...
Рейтинг: 0 / 0
[PHP] странная работа регулярных выражений
    #38556748
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кавычки то двойные, а слеш не экранирован...
...
Рейтинг: 0 / 0
[PHP] странная работа регулярных выражений
    #38557260
Vasiliy_Kashkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

поменял на одинарные, ничего не изменилось
...
Рейтинг: 0 / 0
[PHP] странная работа регулярных выражений
    #38557347
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasiliy_Kashkin,

Во-первых, лучше пользовать preg_replace (она быстрее и не устаревшая)
Во-вторых, лучше не менять на одинарные кавыки, а экранировать слэши
...
Рейтинг: 0 / 0
[PHP] странная работа регулярных выражений
    #38557348
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vasiliy_Kashkin,

Странно. Вроде соответствует мануалу:
http://www.regular-expressions.info/charclass.html The closing bracket (]), the caret (^) and the hyphen (-) can be included by escaping them with a backslash, or by placing them in a position where they do not take on their special meaning.Хотя, немного смущают последние слова...

PS: Может на preg_replace() пора перейти? Там такой проблемы не припоминаю.
...
Рейтинг: 0 / 0
[PHP] странная работа регулярных выражений
    #38557394
Vasiliy_Kashkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
и правда, c preg_replace странность не наблюдается

ПрограмёрVasiliy_Kashkin,
Во-вторых, лучше не менять на одинарные кавыки, а экранировать слэши
почему так?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / [PHP] странная работа регулярных выражений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]