Mar*_*tin 2 php regex preg-replace
这就是我想要做的:
$line = 'blabla translate("test") blabla';
$line = preg_replace("/(.*?)translate\((.*?)\)(.*?)/","$1".translate("$2")."$3",$line);
Run Code Online (Sandbox Code Playgroud)
因此结果应该是翻译("test")被"test"的翻译所取代.
问题是translate("$ 2")将字符串"$ 2"传递给translate函数.所以translate()尝试翻译"$ 2"而不是"test".
有没有办法在替换之前将匹配的值传递给函数?
preg_replace_callback是你的朋友
function translate($m) {
$x = process $m[1];
return $x;
}
$line = preg_replace_callback("/translate\((.*?)\)/", 'translate', $line);
Run Code Online (Sandbox Code Playgroud)