我有一个网站,我需要检查并用href替换文本,这不是问题。但是我必须本地化url,这是通过一个函数来完成的,但我不能让它一起工作。
我的代码替换链接:
$text = "this is a test text blabla <a href="https://example.com/test/">Test</a>";
$pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))+/";
$replace = '${0}';
echo preg_replace($pattern, $replace, $text);
当我替换文本时,我需要在$ replace变量上执行localize函数。我知道可以通过使用preg_replace_callback完成,我搜索了互联网,但无法使其正常工作。
我的本地化网址代码:
$replace = WPGlobus_Utils::localize_url($replace, 'en');
// This will replace the url from https://example.com/test/ to https://example.com/en/test/
提前致谢,
雷米
答案 0 :(得分:1)
您需要使用preg_replace_callback
以下略微增强的模式:
$pattern = "/(?<=href=[\"'])[^\"']+(?=[\"'])/";
然后......
$result = preg_replace_callback($pattern, function($m) {
return localize_url($m[0]);
}, $text);
请注意,(\"|')
旨在匹配"
或'
,而使用字符类(["']
)会更好,更有效。