Экранирование строки для использования в регулярном выражении preg_ - PullRequest
2 голосов
/ 05 июня 2010

Существует ли каноническая функция / метод для экранирования строки, которая будет использоваться в preg_, так что любые специальные символы PCRE будут интерпретироваться как литеральные. В принципе, это известный способ обеспечить что-то вроде

I am a fancy string (well, that guy ... said I was fancy)

превращается в

I am a fancy string \(well, that guy \.\.\. said I was fancy\)

Вариант использования - что-то вроде

$re = get_string_from_somewhere();
$re = our_magic_function($re);
preg_match_all('%'.$re.'%',$string, $matches);

1 Ответ

6 голосов
/ 05 июня 2010

Я считаю, что preg_quote () - это ответ, который вы ищете ...

Если вы используете пользовательский разделитель (как вы делаете в своем примере), обязательно установите второй параметр ($ delimiter) на тот, который используется в регулярном выражении ... Таким образом, ваш вызов будет preg_quote($string, '%');

...