从字符串中提取URL

我正在尝试找到一种可靠的解决方案,以从字符串中提取URL。我有一个站点,用户可以在其中回答问题,并且可以在源框中输入他们的信息源,并允许他们输入网址。我想提取该URL并使其成为超链接。类似于Yahoo

Answers的操作方式。

有谁知道可以做到这一点的可靠解决方案?

我发现的所有解决方案都适用于某些URL,但不适用于其他URL。

谢谢

回答:

约翰·格鲁伯(John

Gruber)花了很多时间完善用于链接检测的“一个正则表达式来统治所有人”。使用preg_replace()如在其它的答案中提到,使用以下正则表达式应该是最精确的一个,如果不是最准确的,用于检测链接方法:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

如果只想匹配HTTP / HTTPS:

(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

以上是 从字符串中提取URL 的全部内容, 来源链接: utcz.com/qa/425036.html

回到顶部