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