Обратный вызов псевдотипа - это просто строка с именем функции. Таким образом, вы можете объявить функцию как любую другую функцию и использовать это имя так же, как и вы. Или вы используете create_function
для объявления функции при исполнении. create_function
вернет имя вновь созданной функции lambda_
x
. (Начиная с PHP 5.3 вы также можете использовать синтаксис анонимной функции .)
Но поскольку callback - это просто имя функции, вы можете использовать функцию, чтобы создать эту функцию на лету и вернуть имя этой новой созданной функции, например:
function shift_years($years) {
return create_function('$matches', 'return $matches[1].($matches[2]+'.((int)$years).');');
}
$func = shift_years(123);
echo preg_replace_callback("|(\d{2}/\d{2}/)(\d{4})|", $func, $text);
Теперь shift_years
создает пользовательскую функцию callback , как указано.