-1

可能重复:
如何匹配文本中的 URI?
检查字符串是否为有效 URL 的最佳正则表达式是什么?

我需要使用正则表达式(PHP)从包含许多 URL 的字符串中将 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>这里有一些其他文字a href="http://google.com/wiki/Kettle"> /a>

我需要提取 http://en.wikipedia.org/wiki/Kettle.zip

任何方法都可以...正则表达式与否。

4

1 回答 1

1

不要使用正则表达式。正则表达式不是解决所有与字符串相关的问题的魔杖。

用于parse_url()拆分您的 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 
)

从那里穿过阵列,找到你想要的。

于 2012-12-18T23:11:31.797 回答