Как экранировать спецсимволы регулярных выражений?

PureVirtual

Новичок
Как экранировать спецсимволы регулярных выражений?

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

P.S.: Наверняка есть ответы с использованием Perl'овских регулярных выражений, но, честно говоря, я предпочёл бы остаться в рамках POSIX'овских, если можно.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Есть
[m]preg_quote[/m]
 

PureVirtual

Новичок
Mr_Max, camka, спасибо! Я так понимаю, функция в равной степени годится и для посиксовских регулярных выражений?
 

PureVirtual

Новичок
WP, с одной стороны лень-матушка (никак толком не изучу перловый вариант), с другой - любокь к посиксу и страх перед перлом. =)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
PureVirtual
нездоровая любовь какая-то
 

WP

^_^
Угу, из разряда сексуальных извращений. Некрофилией пахнет, батенька.
 

PureVirtual

Новичок
Mr_Max, WP, ничего вы в классике не понимаете. :p И вообще, не втягивайте меня во флуд. ;)
 

phprus

Moderator
Команда форума
PureVirtual
Если классика работает хуже, то от нее надо избавляться, а ereg* почти всегда работают гораздо медленнее preg_*
 

PureVirtual

Новичок
phprus, спасибо, надеюсь, это обстоятельство будет последним и решающим в ряду аргументов, которые всё-таки, хочется верить, однажды заставят меня изучить синтаксис перловских регулярных выражений. :)
 
Сверху