Второй параметр в preg_replace_callback () - PullRequest
0 голосов
/ 05 января 2012

У меня проблема с функцией preg_replace_callback() в PHP. Я хочу вызвать функцию, которая требует двух параметров.

private function parse_variable_array($a, $b)
{
    return $a * $b;
}

В интернете я нашел этот кусок кода:

preg_replace_callback("/regexcode/", call_user_func_array(array($this, "foo"), array($foo, $bar)), $subject);

Но в функции foo я не могу использовать массив совпадений, который обычно используется с preg_replace_callback

Надеюсь, вы мне поможете!

1 Ответ

5 голосов
/ 05 января 2012

Обратный вызов называется как есть, вы не можете передать ему дополнительные параметры.Вы можете сделать простую функцию-обертку.Для PHP 5.3+ это легко сделать с помощью анонимных функций:

preg_replace_callback(..., function ($match) {
    return parse_variable_array($match, 42);
}, ...);

Для более старых версий PHP создайте обычную функцию, которую вы передаете как обычно, как обратный вызов.

...