仅当文本不是链接时才用链接替换文本(在php中)

时间:2012-03-14 10:19:44

标签: php regex

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

但是,如果它还不是链接,我只想这样做。我怎样才能使用php正则表达式做同样的事情。

  • 用例1 - 第1页 - &gt;应更改为<a href="/page1">page1</a>
  • 用例2 - <a href="/page1">page1</a> - &gt;什么都不应该改变

1 个答案:

答案 0 :(得分:1)

如果您事先知道确切的链接文本,那么您可以检查它之前和之后是否存在引号或有角度的括号。 您确定这是您应该问的问题吗?

对于确切的字符串&#39; page1&#39;:

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

这是一个糟糕的解决方案尽管如此。您应该使用HTML解析器,因为正则表达式对于这样的事情永远不可靠。在某些条件下可以破解。