2

假设我有一个字符串,如 $str ::

$str = "Test,

Here\'s an interesting in-house litigation position with JPMorgan Chase in New York I thought you might be interested inL

<a href="http://www.example.com/lcdetail.php?akey=e1725">http://www.example.com/lcdetail.php?akey=e1725</a>

They are not using recruiters to fill this job, so if you are interested you can just apply directly.  

http://www.example.com/lcdetail.php?akey=e1725

Cordially
--Harrison";

现在我想将标签添加到标签不存在的链接中。

我已经使用了这个函数,但没有返回想要的值。

function processString($s){  
  return preg_replace('@(?<!href=")(https?:\/\/[\w\-\.!~?&=+\*\'(),\/]+)((?!\<\/\a\>).)*@i','<a href="$1">$1</a>',$s);
}

我的要求是不要在链接中添加锚标记(如果存在)并添加到那些没有的。

谢谢。

4

1 回答 1

4

好吧,我刚刚修改了您的后向路径(?<!href="|">)以避免标签内的链接...

所以使用:

function processString($s){  
  return preg_replace('@(?<!href="|">)(https?:\/\/[\w\-\.!~?&=+\*\'(),\/]+)((?!\<\/\a\>).)*@i','<a href="$1">$1</a>',$s);
}

正则表达式 101 演示

键盘演示

于 2013-09-09T12:53:18.050 回答