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

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

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

Ответ 1

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

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

preg_replace_callback($regex, function($match) {
  // do stuff
  return $stuff;
}, $subject);