Ответ 1
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?.