使用正则表达式解析后获取重复的数组条目

时间:2010-01-06 04:14:18

标签: php regex arrays

我在PHP脚本中使用正则表达式来检查Rapidshare链接的页面,并将它们加载到数组中。

我的代码:

if(preg_match_all('/http:\/\/rapidshare\.com\/files\/.*?\/[^\s]+/', $links[0], $links))
{
    print_r($links);
} else {
    die('Cannot find post links :(');
}

它正确找到链接,并将它们放入数组中:

Array
(
    [0] => Array
        (
            [0] => http://rapidshare.com/files/320708377/file_name1.rar
            [1] => http://rapidshare.com/files/320708377/file_name1.rar
            [2] => http://rapidshare.com/files/333708133/file_name2.rar
            [3] => http://rapidshare.com/files/333708133/file_name2.rar
            [4] => http://rapidshare.com/files/330738827/file_name3.rar
            [5] => http://rapidshare.com/files/330738827/file_name3.rar
        )

)

正如您所看到的,它为每个链接输入了两个链接到数组中。我不知道为什么会这样做,但我怀疑它与正则表达式有关。

有任何帮助吗?干杯。 :)

4 个答案:

答案 0 :(得分:1)

仅供记录:

$array = array_unique($values); 

虽然它不适用于多维数组..所以你必须通过第一个数组for each

答案 1 :(得分:1)

preg_match_all()不会神奇地复制网址,它们必须每次发生2次。你在一串HTML上使用正则表达式?我怀疑,如果有<a>标记,您同时捕获href和实际链接文字:

<a href="http://www.example.com">http://www.example.com</a>

答案 2 :(得分:0)

sigh 发生了,因为它是一个超链接,它抓取它加载的URL和链接文本。

答案 3 :(得分:0)

preg-match-all 可以使用相同的变量名进行匹配和匹配吗?

太混乱了。

另外。给我们$ links的内容