Intereting Posts
Magento api: указан неверный адаптер webservice Вызов веб-службы PHP из c # Сброс Infinite Scroll для отображения новых результатов, полученных через AJAX Строковые функции PHP vs функции mbstring Как использовать php-intl для преобразования кодов стран в локализованные названия стран Переименование пули моего пользовательского типа сообщений в WordPress больше не работает и сохраняет старую слизню Основная структура MVC (PHP) Проверьте, существует ли многомерный массив «run-time» Датские персонажи заменены вопросительным знаком Warnin: Недопустимый тип смещения пришел по щелчку входа в PHP Пользовательский запрос SugarCRM в всплывающем списке Загрузка файла Android (Java) на PHP servar не удалась с Android 4.03 Пользовательская страница ошибки не отображается на Laravel 5 Как заменить несколько символов одинаковым количеством символов регулярным выражением? Как сделать отрицательную проверку формы в кодеригере?

PHP preg_replace: использовать переменную

У меня проблема с переменной из preg_replace. В основном, что я хочу достичь, это искать некоторые шаблоны в тексте и заменять их контентом. Замена выполняется в отдельной функции (retrieveValue ()). Однако мне трудно переносить переменную ('$ 1').

$types = array( array( '/\*#(.*?)#\*/', $this->retrieveValue($templateVars,'$1') ) ); foreach ($types as $type) { $template = preg_replace($type[0], $type[1], $template); } 

Проблема заключается в том, что $this->retrieveValue($templateVars,'$1') выполняется до вызова preg_replace .

Решение. Посмотрите на preg_replace_callback .

Я предлагаю вам создать новый метод в своем классе:

 public function _replace($matches) { return $this->retrieveValue($templateVars, $matches[1]); } 

и затем может использовать:

 preg_replace_callback('/\*#(.*?)#\*/', array($this, '_replace'), $template); 

Вы также можете использовать анонимные функции в PHP 5.3.