可能重复:
How to match URIs in text?
What is the best regular expression to check if a string is a valid URL?
我需要使用regexp(PHP)从包含许多URL的字符串中提取zip文件的URL。
一个简单的例子应该会有所帮助:
目标:提取网址http://en.wikipedia.org/wiki/Kettle.zip
基本字符串:
/url?q=http://en.wikipedia.org/wiki/Kettle.zip&sa=U&ei=VpnIUP22Js blah /url?q=http://en.wikipedia.org/wiki/Kettle&sa=U&ei=VpnIUP22Js blah /url?q=http://en.wikipedia.org/wiki/Kettle.rar&sa=U&ei=VpnIUP22Js
更新; 让我们说基本字符串是
href =“http://en.wikipedia.org/wiki/Kettle.zip”>有些文字/ a>其他一些文字来自href =“http://google.com/wiki/Kettle”&gt ; / A>
我需要提取 http://en.wikipedia.org/wiki/Kettle.zip
任何方法都可以......正则表达式。
答案 0 :(得分:1)
不要使用正则表达式。 Regexes不是一个魔术棒,可以解决与字符串相关的所有问题。
使用parse_url()
拆分您的网址,然后使用explode
拆分&
上的查询字符串。
$url = "http://example.com/url?q=http://en.wikipedia.org/wiki/Kettle.zip&sa=U&ei=VpnIUP22Js";
$query = parse_url($url, PHP_URL_QUERY);
print "query is: $query\n";
$args = explode( '&', $query );
print_r( $args );
运行此命令:
query is: q=http://en.wikipedia.org/wiki/Kettle.zip&sa=U&ei=VpnIUP22Js
Array
(
[0] => q=http://en.wikipedia.org/wiki/Kettle.zip
[1] => sa=U
[2] => ei=VpnIUP22Js
)
从那里走过阵列,找到你想要的那个。