2012-01-13 6 views
0

PHP 5.2.15preg_replace backreference date function

Я пытаюсь заменить {date [F]} на функцию даты.

У меня есть шаблон, который отлично работает.

preg_replace('/({date\[(.*?)\]})/', date(${2}), $subject); 

Я попытался preg_replace_callback, но это, кажется, не работает, даже когда я использую create_function()

я получаю в основном неопределенные ошибки в моих методах пытались.

+1

Вы должны использовать '([^]] +)', а не '(. *?)' – fge

ответ

1

Вам нужен /e modifier. И выражение замены должна быть строка:

= preg_replace('/(\{date\[(.*?)\]})/e', 'date("$2")', $subject); 

Обратите внимание, что вы забыли, чтобы избежать первого { фигурной скобки.

См. Примеры руководства для preg_replace#105490. Или как preg_replace_callback обратные вызовы должны распаковать параметр соответствия (что похоже на исходную проблему).

+0

Sweet, он работает, хотя я получаю некоторые строгие стандартные ошибки, используя preg_replace ('/ (\ {date \ [([^]] +) \]})/e ',' date ("$ 2") ', $ subject); – MLM