在 preg_replace 中的第二项或第三项上应用函数(preg_replace_callback?)
我下面有一个简单的 (BBCode) PHP 代码,用于将代码插入评论/帖子中。
function highlight_code($str) {
$search = array(
'/\[code=(.*?),(.*?)\](((?R)|.)*?)\[\/code\]/is',
'/\[quickcode=(.*?)\](((?R)|.)*?)\[\/quickcode\]/is'
);
$replace = array(
'<pre title="$2" class="brush: $1;">$3</pre>',
'<pre class="brush: $1; gutter: false;">$2</pre>'
);
$str = preg_replace($search, $replace, $str);
return $str;
}
我想要做的是在这些位置插入函数:
$replace = array(
'<pre title="$2" class="brush: $1;">'.myFunction('$3').'</pre>',
^here
'<pre class="brush: $1; gutter: false;">'.myFunction('$2').'</pre>'
^here
);
从我读到的内容来看,我可能需要使用 preg_replace_callback()
或 e-modifier,但我不知道如何着手做这件事;我对正则表达式的了解不是很好。希望得到一些帮助!
I have below a simple (BBCode) PHP code for insert code into a comment/post.
function highlight_code($str) {
$search = array(
'/\[code=(.*?),(.*?)\](((?R)|.)*?)\[\/code\]/is',
'/\[quickcode=(.*?)\](((?R)|.)*?)\[\/quickcode\]/is'
);
$replace = array(
'<pre title="$2" class="brush: $1;">$3</pre>',
'<pre class="brush: $1; gutter: false;">$2</pre>'
);
$str = preg_replace($search, $replace, $str);
return $str;
}
What I want to be able to do is insert functions at these locations:
$replace = array(
'<pre title="$2" class="brush: $1;">'.myFunction('$3').'</pre>',
^here
'<pre class="brush: $1; gutter: false;">'.myFunction('$2').'</pre>'
^here
);
From what I've read on SO I may need to use preg_replace_callback()
or an e-modifier, but I cannot figure out how to go about doing this; my knowledge with regex is not so good. Would appreciate some help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用此片段(e-修饰符):
或此片段(回调):
You can either use this snippet (e-modifier):
or this one (Callback):