PHP正则表达式使用返回函数替换多个URL

PHP正则表达式使用返回函数替换多个URL,php,preg-replace,backend,preg-replace-callback,Php,Preg Replace,Backend,Preg Replace Callback,我有一个网站,在那里我需要检查文本并用其中的href替换,这不是问题所在。但是我必须本地化url,这是通过一个函数完成的,但是我不能让它一起工作 替换链接的我的代码: $text = "this is a test text blabla <a href="https://example.com/test/">Test</a>"; $pattern = "/(?<=href=(\"|'))[^\"']+(?=(\"|'))+/"; $replace = '${0}'

我有一个网站,在那里我需要检查文本并用其中的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);
提前感谢,

Remy

您需要使用以下稍微增强的图案:

$pattern = "/(?<=href=[\"'])[^\"']+(?=[\"'])/";

请注意,
(\“|”)
意味着匹配
,使用字符类更有效,也就是
[“]

,因此在TLD之后需要添加
en/
?是的,但这不是问题。我首先必须预先替换字符串中的所有链接,并且需要本地化(将en/添加到url)在preg将被替换后。1)使用
$pattern=“/(?@WiktorStribiżew谢谢!我编辑了一点代码,效果很好:)我今天的最后一票是给你的:)
$pattern = "/(?<=href=[\"'])[^\"']+(?=[\"'])/";
$result = preg_replace_callback($pattern, function($m) { 
   return localize_url($m[0]);
}, $text);