仅当文本不是链接时(在php中),才将其替换为链接


Replace text with link only when it is not a link already (in php)

我必须将某些代码中的"page1"替换为"<a href="/page1">page1</a>"

然而,我只想这样做,如果它还不是一个链接。如何使用php正则表达式进行同样的操作。

  • 用例1-page1->应更改为<a href="/page1">page1</a>
  • 用例2-<a href="/page1">page1</a>->不应更改任何内容

如果你事先知道确切的链接文本,那么你可以检查它前后是否有引号或尖括号。你确定这是你应该问的问题吗

对于确切的字符串"page1":

preg_replace('#(^|[^"''>])'s*(page1)'s*($|[^"''<])#is', '<a href="$2">$2</a>', $s);

这确实是一个糟糕的解决方案。您应该使用HTML解析器,因为regex对于这样的事情永远都不可靠。它在某些条件下可能断裂。