PHP查找并替换链接标题,如果链接包含特定的字符串


PHP find and replace link title if the link contains specific string

我正在尝试做这个正则表达式匹配和替换,但我不能做到这一点。

例子
<a href="../files/...">One</a>
<a href"../files/...">Two</a>
<a href="three">Three</a>
<a href="four">Four</a>

我想找到每一组a标签并替换成这样的东西

查找href

中包含"/file"字符串的链接
<a href="../files/...">One</a>

并将其名称替换为

<a href="../files/...">One (FileType Filesize)</a>

和其他的a标签一样。

任何帮助将非常感激!

(<a href(?=[^>]*'/file)[^<]*)(<'/a>)将找到您感兴趣的链接。在这里测试:https://regex101.com/r/tG4fT1/1。如果您想要的替换是静态的,您可以单独使用regex和preg_replace来完成。

$re = "/(<a href(?=[^>]*''/file)[^<]*)(<''/a>)/"; 
$subst = "$1 (Filetype Filesize)$2"; 
$result = preg_replace($re, $subst, $str);

现在,假设您实际上想要添加字符串(Filetype Filesize),而不是FiletypeFilesize的实际值,这就是您的问题要解决的问题。如果是值,则会变得更加复杂,根据这个答案,您可能必须为此使用匿名函数,同时还要为每个值指定正确的匹配。