preg_quote()
- это то, что вы ищете:
Описание
string preg_quote ( string $str [, string $delimiter = NULL ] )
preg_quote () берет str
и помещает
обратная косая черта перед каждым персонажем
это часть регулярного выражения
синтаксис. Это полезно, если у вас есть
строка времени выполнения, с которой вам нужно соответствовать
в некотором тексте и строка может
содержат специальные символы регулярного выражения.
Специальное регулярное выражение
символы: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -
Параметры
1022 * ул *
Строка ввода.
Разделитель
Если указан дополнительный разделитель, он также будет экранирован. Это полезно для экранирования разделителя, который требуется для функций PCRE. / Является наиболее часто используемым разделителем.
Важно отметить, что если аргумент $delimiter
не указан, разделитель - символ, используемый для включения вашего регулярного выражения, обычно косая черта (/
) - не будет экранирован. Обычно вы хотите передать любой разделитель, который вы используете с вашим регулярным выражением, в качестве аргумента $delimiter
.
Пример - использование preg_match
для поиска вхождений данного URL в окружении пробелов:
$url = 'http://stackoverflow.com/questions?sort=newest';
// preg_quote escapes the dot, question mark and equals sign in the URL (by
// default) as well as all the forward slashes (because we pass '/' as the
// $delimiter argument).
$escapedUrl = preg_quote($url, '/');
// We enclose our regex in '/' characters here - the same delimiter we passed
// to preg_quote
$regex = '/\s' . $escapedUrl . '\s/';
// $regex is now: /\shttp\:\/\/stackoverflow\.com\/questions\?sort\=newest\s/
$haystack = "Bla bla http://stackoverflow.com/questions?sort=newest bla bla";
preg_match($regex, $haystack, $matches);
var_dump($matches);
// array(1) {
// [0]=>
// string(48) " http://stackoverflow.com/questions?sort=newest "
// }