Найти в строке текст и заменить его на return функции

Есть строка вида

$str = 'Привет, это мой project(1, 10) проект';

Мне нужно чтобы там произошло выполнение функции:

function project($ot, $do) {
     .....
     return $res;
}

И соответственно чтобы в тексте было уже то что вернула функция.

P.S. эта строка выводиться из базы.

Хотелось бы что-то вроде:

str_replace('project(*), function project(*, *), $str)

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

Автор решения: Ivan Dudarev

посмотрите в сторону preg_replace_callback. Я думаю, это то, что вам нужно.

<?php

$str = preg_replace_callback('/(\s?)project\s?\(\s?(\d+)\s?,\s?(\d+)\s?\)(\s?)/ui', function($arr){return $arr[1] . project($arr[2], $arr[3]) . $arr[4];}, $str);
→ Ссылка