寻找一个简单的url解析正则表达式

时间:2012-08-21 16:08:45

标签: php regex

我正在寻找一个简单的正则表达式来获取一个文本块,从中解析出所有的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,点,正斜杠(/),下划线,连字符( - ),不区分大小写

可以对其进行任何改进吗?

1 个答案:

答案 0 :(得分:2)

您没有验证网址,只是解析文字以查找网址,因此只需使用%\bhttps?://\S+%i

如果您想检查此类网址是否在<a标记内,请使用:

%<a\s[^>]*\bhref=['"](https?://\S+)["']%i

验证网址使用filter_var()功能:

var_dump(filter_var($url, FILTER_VALIDATE_URL));