我想实现非常宽松的正则表达式为使用PHP的聊天客户端匹配。Twitter的样式URL正则表达式匹配
聊天客户端必须能够获取完整和不完整的URL。
例如:
http://www.example.com
或www.example.com
或example.com
我已成立,试图实现这一的preg_replace:
$find = array("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/is","/(^(?!http:\/\/)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/?\S*)?)/is");
$replace = array("<a target=\"_blank\" href=\"http://\\1\">\\1</a>","<a target=\"_blank\" href=\"\\1\">\\1</a>");
$output = preg_replace($find, $replace, $input);
所以,目的是第一次发现“完整“与协议的URL,然后尝试找到没有协议的”懒惰“URL。
目前它适用于“完整”网址,但“懒惰”网址不会被拾取。
任何帮助将不胜感激。
谢谢。
第二种类型,以“www”开头非常简单,但第三种类型更难以避免产生误报。我对第二种类型使用以下内容:'/ \ b(www \。[a-zA-Z0-9 \/\\\:\?\%\。\&\; =#\ - \ _ \!\ + \〜\,] *)/ i'没有测试,可能是最初的www \。可以删除给第三种类型? – tamouse
嘿Tamouse,工作得很好。它似乎不会干扰其他正则表达式。请回答,我会接受。 – Moe
行..所以它似乎干扰了“完整的”RegEx查找程序。有没有办法阻止它从以http://' – Moe