PHP Выполнить функцию по нахождению шаблонного текста

Прошу подсказать, как можно средствами php заменить часть текста на выполнение функции. К примеру, идет текст:

"И вот вышел из дома {{{1,5}}} и ушел." 

Как сделать, чтобы вместо {{{1,5}}} выводился ответ от function(a,b) - где в данном случае a = 1 и b = 5.

Спасибо заранее.


Ответы (1 шт):

Автор решения: Vasily Dovgopol

Можно использовать preg_replace_callback. Довольно простенький пример:

<?php

function replaceCallback($matches)
{
   return sum($matches[1], $matches[2]);
}

function sum($a, $b) {
   return $a + $b;
}

$text = 'Test text number {{{1,0}}}. It`s about number {{{1,1}}}. Good luck';

echo preg_replace_callback(
   "{{{{(\d),(\d)}}}}",
   "replaceCallback",
   $text
);

Результатом выполнения будет строка: Test text number 1. It's about number 2. Good luck Далее функцию можно развивать как угодно, если возможны различные варианты применяемых функций в зависимости от паттерна - можно использовать preg_replace_callback_array

→ Ссылка