我想将诸如http://google.com/之类的链接转换为HTML,但是如果它们已经在HTML链接中,无论是在href =“”还是在链接文本中,我都不会不想转换它们。将文本链接转换为HTML,并考虑上下文
我发现这在另一个问题:
preg_replace('@(https?:\/\/([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@', '<a href="$1" target="_blank">$1</a>', $text);
但是,如果我有一些诸如:
<a href="http://google.com/">http://google.com/</a>
已经在讨论的目标文本,它会创建一个HTML中的两个环节。我似乎无法弄清楚它是在“/”之前还是在“”之内。
[请勿做它!](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – cwallenpoole
bbpress做除了浏览他们的意大利面代码之外,我似乎无法弄清楚它是如何做到的。 –
上下文感知并不简单,但您可能会忽略最小查找。用“(?<!href =”| src =“|”>)排除主要罪魁祸首的否定断言(另一种常见方法是*通过移除已经HTML化的URL来规范化输入文本) – mario