关于这个问题:http://stackoverflow.uservoice.com/pages/general/suggestions/103227-parser-does-not-match-all-valid-urls这个正则表达式是否合适,还是需要进行改进,如果它需要精炼怎么样?
\b(?P(?:.*?://)[\w\-\_\.\@\:\/\?\#\=]*)\b
localshred.. 13
即使问题含糊不清,我也会尝试回答可能的解决方案.
可能的意图1:匹配给定文件中的任何URL(替换):
/^([^:]+):\/\/([-\w._]+)(\/[-\w._]\?(.+)?)?$/ig
以上内容应该匹配几乎所有的URL格式,以及以下捕获的组:
0 => entire match 1 => protocol (eg. http, ftp, git, ...) 2 => hostname (eg. www.stackoverflow.com) 3 => requested_file_path (eg. /images/prod/1/4/success.gif) 4 => query_string (eg. param=1¶m2=2¶m3=3)
可能的意图2:获取有关当前请求URL的详细信息
为了获取有关URL的详细信息,例如协议,主机名,请求的文件路径和查询字符串,最好使用语言/对象方法来收集结果.在php中,您可以使用函数调用获取所有上述信息:
$protocol = $_SERVER['SERVER_PROTOCOL']; // HTTP/1.0 $host = $_SERVER['HTTP_HOST']; // www.stackoverflow.com $path_to_file = dirname($_SERVER['SCRIPT_NAME']); $file = basename($_SERVER['SCRIPT_NAME']); $query_string = $_SERVER['QUERY_STRING'];
希望这有助于任何方式.
即使问题含糊不清,我也会尝试回答可能的解决方案.
可能的意图1:匹配给定文件中的任何URL(替换):
/^([^:]+):\/\/([-\w._]+)(\/[-\w._]\?(.+)?)?$/ig
以上内容应该匹配几乎所有的URL格式,以及以下捕获的组:
0 => entire match 1 => protocol (eg. http, ftp, git, ...) 2 => hostname (eg. www.stackoverflow.com) 3 => requested_file_path (eg. /images/prod/1/4/success.gif) 4 => query_string (eg. param=1¶m2=2¶m3=3)
可能的意图2:获取有关当前请求URL的详细信息
为了获取有关URL的详细信息,例如协议,主机名,请求的文件路径和查询字符串,最好使用语言/对象方法来收集结果.在php中,您可以使用函数调用获取所有上述信息:
$protocol = $_SERVER['SERVER_PROTOCOL']; // HTTP/1.0 $host = $_SERVER['HTTP_HOST']; // www.stackoverflow.com $path_to_file = dirname($_SERVER['SCRIPT_NAME']); $file = basename($_SERVER['SCRIPT_NAME']); $query_string = $_SERVER['QUERY_STRING'];
希望这有助于任何方式.