Флаги регулярных выражений

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

Пример:

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

2 ответа

Решение

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?,

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

Другие вопросы по тегам