preg_replace 在替换之前通过函数传递匹配
这就是我想要做的:
$line = 'blabla translate("test") blabla';
$line = preg_replace("/(.*?)translate\((.*?)\)(.*?)/","$1".translate("$2")."$3",$line);
所以结果应该是 translate("test") 被替换为 "test" 的翻译。
问题在于,translate("$2") 将字符串“$2”传递给翻译函数。因此,translate() 尝试翻译“$2”而不是“test”。
有没有办法在替换之前将匹配的值传递给函数?
This is what i want to do:
$line = 'blabla translate("test") blabla';
$line = preg_replace("/(.*?)translate\((.*?)\)(.*?)/","$1".translate("$2")."$3",$line);
So the result should be that translate("test") is replaced with the translation of "test".
The problem is that translate("$2") passes the string "$2" to the translate function. So translate() tries to translate "$2" instead of "test".
Is there some way to pass the value of the match to a function before replacing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
preg_replace_callback 是你的朋友
preg_replace_callback is your friend
您可以将 preg_replace_callback 函数用作:
You can use the preg_replace_callback function as: