PHP preg_replace() 反向引用用作另一个函数的参数
我正在尝试使用正则表达式从标签中提取信息,然后根据标签的各个部分返回结果。
preg_replace('/<(example )?(example2)+ />/',analyze(array($0, $1, $2)), $src);
所以我正在抓取零件并将其传递给 analyze()
函数。 一旦到达那里,我想根据部件本身进行工作:
function analyze($matches) {
if ($matches[0] == '<example example2 />')
return 'something_awesome';
else if ($matches[1] == 'example')
return 'ftw';
}
等等。但是一旦我进入分析函数,$matches[0]
就等于字符串'$0
'。 相反,我需要 $matches[0]
来引用 preg_replace() 调用中的反向引用。 我怎样才能做到这一点?
谢谢。
编辑:我刚刚看到了 preg_replace_callback() 函数。 也许这就是我正在寻找的......
I am trying to extract information from a tags using a regex, then return a result based on various parts of the tag.
preg_replace('/<(example )?(example2)+ />/', analyze(array($0, $1, $2)), $src);
So I'm grabbing parts and passing it to the analyze()
function. Once there, I want to do work based on the parts themselves:
function analyze($matches) {
if ($matches[0] == '<example example2 />')
return 'something_awesome';
else if ($matches[1] == 'example')
return 'ftw';
}
etc. But once I get to the analyze function, $matches[0]
just equals the string '$0
'. Instead, I need $matches[0]
to refer to the backreference from the preg_replace() call. How can I do this?
Thanks.
EDIT: I just saw the preg_replace_callback() function. Perhaps this is what I am looking for...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能像这样使用
preg_replace
。 您可能需要 preg_replace_callbackYou can't use
preg_replace
like that. You probably want preg_replace_callback