PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

preg_replace_callback> <preg_match
Last updated: Fri, 10 Oct 2008

view this page in

preg_quote

(PHP 4, PHP 5)

preg_quoteЭкранирует символы в регулярных выражениях

Описание

string preg_quote ( string $str [, string $delimiter ] )

Функция preg_quote() принимает строку str и добавляет обратный слеш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться.

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

В регулярных выражениях служебными считаются следующие символы: . \\ + * ? [ ^ ] $ ( ) { } = ! < > | :

Пример #1 preg_quote() пример

<?php
$keywords 
"$40 for a g3/400";
$keywords preg_quote($keywords"/");
echo 
$keywords// возвращает \$40 for a g3\/400
?>

Пример #2 Выделение курсивом слова в тексте

<?php
// В данном примере preg_quote($word) используется, чтобы
// избежать трактовки символа '*' как спец. символа.

$textbody "This book is *very* difficult to find.";
$word "*very*";
$textbody preg_replace ("/" preg_quote($word) . "/",
                          
"<i>" $word "</i>",
                          
$textbody);
?>

Замечание: Эта функция безопасна для обработки данных в двоичной форме.



add a note add a note User Contributed Notes
preg_quote
bizzigul at hotmail dot fr
30-Jul-2008 09:10
To prevent any problems, try to always use a delimiter that will *almost* not be used inside the regex, such as ` (back quote)

for example: instead of
<?php preg_match('/foo\/bar\//',$somevar); ?>

use

<?php preg_match('`foo/bar/`',$somevar); ?>

it's that simple! like this, you won't have to bother with delimiters anymore...
Anonymous
26-Dec-2007 03:13
Wondering why your preg_replace fails, even if you have used preg_quote?

Try adding the delimiter / - preg_quote($string, '/');

preg_replace_callback> <preg_match
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites