Проблема с preg_replace_callback ()

Я использую preg_replace_callback для поиска и замены текстовых ссылок с помощью живых ссылок:

http://www.example.com 

в

 <a href='http://www.example.com'>www.example.com</a> 

Функция обратного вызова, которую я предоставляю функции, находится внутри другого класса, поэтому, когда я пытаюсь:

 return preg_replace_callback($pattern, "Utilities::LinksCallback", $input); 

Я получаю сообщение об ошибке, при котором функция не существует. Есть идеи?

В PHP при использовании метода класса в качестве обратного вызова вы должны использовать форму обратного вызова array . То есть вы создаете массив, первым элементом которого является класс (если метод является статическим) или экземпляр класса (если нет), а второй элемент – это функция для вызова. Например

 class A { public function cb_regular() {} public static function cb_static() {} } $inst = new A; preg_replace_callback(..., array($inst, 'cb_regular'), ...); preg_replace_callback(..., array('A', 'cb_static'), ...); 

Разумеется, функция, которую вы вызываете, должна быть видимой из области, в которой вы используете обратный вызов.

См. http://php.net/manual/en/language.pseudo-types.php , для получения подробной информации о действительных обратных вызовах.

NB Чтение там, похоже, с 5.2.3, вы можете использовать свой метод, если функция обратного вызова является статической.

Вы можете сделать это следующим образом:

 return preg_replace_callback($pattern, array("Utilities", "LinksCallback"), $input) 

Ссылка: http://php.net/callback