2010-06-04 2 views
2

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

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); 

ответ

6

Я считаю, что preg_quote() ответ вы ищет ...

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

+0

Не знаю, как я пропустил это на сайте php.net. –