【发布时间】:2018-04-12 20:38:53
【问题描述】:
我有一个网站,我需要在其中检查和替换带有 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 变量执行本地化功能。我知道可以通过使用 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/
提前致谢,
雷米
【问题讨论】:
-
所以在TLD后面需要加上
en/? -
是的,但这不是问题。我首先必须 preg_replace 字符串中的所有链接,并且在要替换 preg 之后,我需要本地化(将 en/ 添加到 url)。
-
1) 使用
$pattern = "/(?<=href=[\"'])[^\"']+(?=[\"'])/";模式 2)preg_replace_callback($pattern, function($m) { return localize_url($m[0]);}, $text);或类似的东西。 -
@WiktorStribiżew 谢谢!我稍微编辑了代码,效果很好! :)
-
我今天的最后一票投给了你 :)
标签: php preg-replace backend preg-replace-callback