Может кто-нибудь объяснить, что делает флаг 'e', или связать меня с тем, что делает? Я не могу найти что-либо через Google.
Пример:
preg_replace("/a(b?)c/e", "search_foo_term('\$1')", $str);
e (PREG_REPLACE_EVAL) Если этот модификатор установлен, preg_replace () выполняет обычную замену обратных ссылок в строке замены, оценивает ее как код PHP и используетрезультат замены строки поиска.Одинарные кавычки, двойные кавычки, обратные косые черты () и символы NULL будут экранированы обратными косыми чертами в замещенных обратных ссылках.Только preg_replace () использует этот модификатор;он игнорируется другими функциями PCRE.
e (PREG_REPLACE_EVAL)
Если этот модификатор установлен, preg_replace () выполняет обычную замену обратных ссылок в строке замены, оценивает ее как код PHP и используетрезультат замены строки поиска.Одинарные кавычки, двойные кавычки, обратные косые черты () и символы NULL будут экранированы обратными косыми чертами в замещенных обратных ссылках.Только preg_replace () использует этот модификатор;он игнорируется другими функциями PCRE.
http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php
Итак, учитывая этот пример:
заменой всего совпадения будет то, что search_foo_term() возвращает, когда прошло совпадение для b?.
Флаг e устарел, в основном по соображениям безопасности. Вместо этого используйте preg_replace_callback.
preg_replace_callback