我正在寻找一个简单的正则表达式来获取一个文本块,从中解析出所有的url,然后返回它们。网址基本上会被<a href>
代码替换,因此http://google.com
将变为<a href="http://google.com">http://google.com</a>
,依此类推。因此,我不认为它需要非常彻底或允许各种疯狂的网址和非英文字符。
这是我提出的正则表达式:
%http[s]?://[A-z0-9/\.\-_]+%i
它将匹配以http://或https://开头的所有字符串,后跟至少一个以下字符:Az 0-9,点,正斜杠(/),下划线,连字符( - ),不区分大小写
可以对其进行任何改进吗?
答案 0 :(得分:2)
您没有验证网址,只是解析文字以查找网址,因此只需使用%\bhttps?://\S+%i
如果您想检查此类网址是否在<a
标记内,请使用:
%<a\s[^>]*\bhref=['"](https?://\S+)["']%i
验证网址使用filter_var()
功能:
var_dump(filter_var($url, FILTER_VALIDATE_URL));