Jac*_*vin 12 php regex url preg-replace
我正在尝试找到一个可靠的解决方案,从一串字符中提取url.我有一个用户回答问题的网站,在源框中,他们输入了他们的信息来源,我允许他们输入网址.我想提取该URL并使其成为超链接.与Yahoo Answers的工作方式类似.
有谁知道可以做到这一点的可靠解决方案?
我找到的所有解决方案都适用于某些URL,但不适用于其他URL.
谢谢
小智 22
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`!()\[\]{};:'".,<>?«»“”‘’]))
Run Code Online (Sandbox Code Playgroud)
如果您只想匹配HTTP/HTTPS:
(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15012 次 |
| 最近记录: |