Как преобразовать preg_replace e в preg_replace_callback?

Хорошо, я немного растерялся. Вот код, который у меня есть сейчас, но я только что узнал e модификатор устарел. Как мне преобразовать его в preg_replace_callback()? Я до сих пор не понял это.

$post = preg_replace("/\[code\]([^] )\[\/code\]/e", 'code(\'$1\')', $post);

1 ответ

Решение

Если память не изменяет, preg_replace_callback() дает вам результаты $match от preg_match() в качестве входных данных и ожидает окончательный результат в качестве выходных данных. Таким образом, вам нужно написать функцию, которая возвращает, например, "code('{$match[1]}')",

Естественно, это может быть встроенная функция, если php 5.3 является опцией:

preg_replace_callback($regex, function($match) {
  // do stuff
  return $stuff;
}, $subject);
Другие вопросы по тегам