PHP 正则表达式使用 return 函数将多个 url 替换为自身
PHP Regex replace multiple urls with itself with a return function
我有一个网站,我需要在其中检查并替换带有 href 的文本,这不是问题所在。但是我必须本地化 url,这是通过一个函数完成的,但我无法让它协同工作。
我用来替换链接的代码:
$text = "this is a test text blabla <a href="https://example.com/test/">Test</a>";
$pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))+/";
$replace = '[=12=]';
echo preg_replace($pattern, $replace, $text);
当我替换文本时,我需要对 $replace 变量执行本地化功能。我知道这可以通过使用 preg_replace_callback 来完成,我在互联网上搜索但无法正常工作。
我的本地化代码 url:
$replace = WPGlobus_Utils::localize_url($replace, 'en');
// This will replace the url from https://example.com/test/ to https://example.com/en/test/
提前致谢,
雷米
您需要将 preg_replace_callback
与以下稍微增强的模式一起使用:
$pattern = "/(?<=href=[\"'])[^\"']+(?=[\"'])/";
然后...
$result = preg_replace_callback($pattern, function($m) {
return localize_url($m[0]);
}, $text);
请注意,(\"|')
用于匹配 "
或 '
,使用字符 class 会更好、更高效,即 ["']
.
我有一个网站,我需要在其中检查并替换带有 href 的文本,这不是问题所在。但是我必须本地化 url,这是通过一个函数完成的,但我无法让它协同工作。
我用来替换链接的代码:
$text = "this is a test text blabla <a href="https://example.com/test/">Test</a>";
$pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))+/";
$replace = '[=12=]';
echo preg_replace($pattern, $replace, $text);
当我替换文本时,我需要对 $replace 变量执行本地化功能。我知道这可以通过使用 preg_replace_callback 来完成,我在互联网上搜索但无法正常工作。
我的本地化代码 url:
$replace = WPGlobus_Utils::localize_url($replace, 'en');
// This will replace the url from https://example.com/test/ to https://example.com/en/test/
提前致谢,
雷米
您需要将 preg_replace_callback
与以下稍微增强的模式一起使用:
$pattern = "/(?<=href=[\"'])[^\"']+(?=[\"'])/";
然后...
$result = preg_replace_callback($pattern, function($m) {
return localize_url($m[0]);
}, $text);
请注意,(\"|')
用于匹配 "
或 '
,使用字符 class 会更好、更高效,即 ["']
.