我正在尝试为使用 PHP 的聊天客户端实现非常宽松的正则表达式匹配。
聊天客户端必须能够获取完整和不完整的 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。
目前它适用于“完整” URL,但“惰性” URL 不会被拾取。