Флаги регулярных выражений - PullRequest
1 голос
/ 18 марта 2010

Может кто-нибудь объяснить, что делает флаг 'e', ​​или связать меня с тем, что делает? Я не могу найти что-либо через Google.

Пример:

preg_replace("/a(b?)c/e", "search_foo_term('\$1')", $str);

Ответы [ 2 ]

7 голосов
/ 18 марта 2010

e (PREG_REPLACE_EVAL)

Если этот модификатор установлен, preg_replace () выполняет обычную замену обратных ссылок в строке замены, оценивает ее как код PHP и используетрезультат замены строки поиска.Одинарные кавычки, двойные кавычки, обратные косые черты () и символы NULL будут экранированы обратными косыми чертами в замещенных обратных ссылках.Только preg_replace () использует этот модификатор;он игнорируется другими функциями PCRE.

http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

Итак, учитывая этот пример:

preg_replace("/a(b?)c/e", "search_foo_term('\$1')", $str);

заменой всего совпадения будет то, что search_foo_term() возвращает, когда прошло совпадение для b?.

2 голосов
/ 09 октября 2013

Флаг e устарел, в основном по соображениям безопасности. Вместо этого используйте preg_replace_callback.

...