字符串中的URL检测

时间:2013-01-06 14:47:30

标签: php regex preg-match

  

可能重复:
  Linkify Regex Function PHP Daring Fireball Method

我正在尝试从字符串中获取网址,我有这个

$link_count = count(explode('http',$post));
if($link_count > 0){
    preg_match_all("#https?://[^.\s]+\.[^\s]+#ix", $note, $matches);
    foreach(){} etc..
}

这里的问题是我也希望能够检测到这样的URL; http://www.link.com或www.link.com或link.com Ps:我在这里搜索过类似的问题,但我还没有看到一个可以解决所有这些类型的URL的问题。

谢谢。

2 个答案:

答案 0 :(得分:2)

尝试

"/\b((http(s)?:\/\/)?(www\.[a-zA-Z0-9\/\\\:\?\%\.\&\;=#\-\_\!\+\~\,]*))/is

正如马里奥所说,没有协议前缀的链接在技术上不是链接。

答案 1 :(得分:1)

试试这个正则表达式:

#(https?://)?([a-z0-9-]+\.)+[a-z0-9]+/?#i