How to convert preg_replace e to preg_replace_callback?
Asked Answered
M

1

2

Okay, so I'm slightly confused. Here is the code I have now, but I just found out the e modifier is deprecated. How do I convert it to a preg_replace_callback()? I still haven't figured it out.

$post = preg_replace("/\[code\]([^] )\[\/code\]/e", 'code(\'$1\')', $post);
Moriyama answered 3/5, 2013 at 20:55 Comment(1)
This question has been added to the Stack Overflow Regular Expression FAQ, under "Modifiers".Crispy
A
6

If memory serves, preg_replace_callback() gives you the results of a $match from preg_match() as input, and expects the final result as output. So you'd need to write a function that returns e.g. "code('{$match[1]}')".

It can be an inline function, naturally, if php 5.3 is an option:

preg_replace_callback($regex, function($match) {
  // do stuff
  return $stuff;
}, $subject);
Adhesive answered 3/5, 2013 at 20:59 Comment(1)
Thank you very much, it helped a lot. I will accept when it lets me.Moriyama

© 2022 - 2024 — McMap. All rights reserved.