Функции Язык программирования PHP

preg_quote

(PHP 3>= 3.0.9, PHP 4)

preg_quote - закавычивает символы регулярного выражения.

Описание

string preg_quote (string str [, string delimiter])

preg_quote() принимает str и помещает backslash перед каждым символом, который является частью синтаксиса регулярного выражения. Это используется в тех случаях, когда у вас имеется строка на этапе прогона, которая должна совпасть с некоторым текстом и может содержать специальные regex-символы.

Если необязательный delimiter специфицирован, он также мнемонизируется/escaped. Это делается для мнемонизации разграничителя/delimiter, которая необходима в PCRE-функциях. Символ / это самый распространённый разграничитель.

Специальные символы регулярного выражения:
. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :
Пример 1.
$keywords = "$40 for a g3/400"; $keywords = preg_quote ($keywords, 
"/"); echo $keywords; // возвращает \$40 for a g3\/400
Пример 2. Итализация слова в некотором тексте
// 
В этом примере preg_quote($word) используется для предотвращения // трактовки 
звёздочек как имеющих специальное значение в регулярном выражении. $textbody = 
"This book is *very* difficult to find."; $word = "*very*"; $textbody = preg_replace 
("/".preg_quote($word)."/", "<i>".$word."</i>", $textbody);


Назад Оглавление Вперёд
preg_match Вверх preg_replace_callback

Синтаксис Патэрна

Отличия от Perl

Эти отличия даны относительно Perl 5.005.

  1. По умолчанию пробельным символом считается любой таковой символ, распознаваемый функцией isspace() библиотеки С, хотя возможна компиляция PCRE с альтернативной таблицей типов символов. Нормально isspace() распознаёт space, formfeed, newline, carriage return, horizontal tab и vertical tab. Perl 5 больше не включает vertical tab в набор пробельных символов. Мнемоника \v, которая долгое время была в документации Perl, фактически никогда не распознавалась. Однако сам по себе этот символ рассматривался как пробельный как минимум до версии 5.002. В 5.004 и 5.005 он не соответствует \s.

  2. PCRE не разрешает повторение квантификаторов или опережающих утверждений/lookahead assertions. Perl разрешает их, но они имеют другое значение. Например, (?!a){3} не утверждает, что три последующие символа не "a". Оно просто утверждает три раза, что следующий символ не "a".

  3. Захваты субпатэрнов, которые возникают внутри отрицательного опережающего утверждения, вычисляются, но их вхождения в векторе смещения никогда не устанавливаются. Perl устанавливает свои числовые переменные из любого такого патэрна, который совпадает до неудачи утверждения при совпадении с чем-либо (продолжая таким образом), но только если негативное опережающее утверждение содержит одну ветвь.

  4. Хотя двоичные нулевые символы поддерживаются в строке-субъекте, они не допускаются в строке патэрна, поскольку он передаётся как нормальная C-строка, оканчивающаяся нулём. Замена "\\x00" может использоваться в патэрне для представления бинарного нуля.