PureVirtual
Новичок
Как экранировать спецсимволы регулярных выражений?
Уважаемые коллеги! Прошу помочь советом. Вот моя ситуация.
Имеется переменное слово $word, и мы хотим проверить, встречается ли оно во фразе $phrase (в качестве слова, а не подстроки). Следующий код делает примерно то, что требуется (детали типа того, что бывает ещё точка с запятой и прочее сейчас не важны).
Однако предположим ситуацию $word = "phpclub.ru"; тогда наряду с нужным нам словом найдутся все слова, отличающиеся заменой точки на произвольный символ (например, "phpclub_ru"). В данном конкретном случае проблема решается экранировкой спецсимвола '.':
А как быть в общем случае? Есть ли аналог функции addslashes() для регулярных выражений? Или есть ли в синтаксисе регулярных выражений способ пометить его часть как "plain text"? Или я вообще что-то делаю не так? Подскажите, пожалуйста.
P.S.: Наверняка есть ответы с использованием Perl'овских регулярных выражений, но, честно говоря, я предпочёл бы остаться в рамках POSIX'овских, если можно.
Уважаемые коллеги! Прошу помочь советом. Вот моя ситуация.
Имеется переменное слово $word, и мы хотим проверить, встречается ли оно во фразе $phrase (в качестве слова, а не подстроки). Следующий код делает примерно то, что требуется (детали типа того, что бывает ещё точка с запятой и прочее сейчас не важны).
PHP:
$word_is_in_phrase = ereg( "(^| ){$word}([ .,:?!]|$)", $phrase ) );
PHP:
$word = str_replace( '.', '\.', $word );
P.S.: Наверняка есть ответы с использованием Perl'овских регулярных выражений, но, честно говоря, я предпочёл бы остаться в рамках POSIX'овских, если можно.