过滤掉链接数组中的最高整数

时间:2010-09-21 01:17:27

标签: php arrays integer hyperlink

但令人困惑的标题让我解释一下。我有一系列像这样的链接:

http://somesite.com/videoplayback?ip=81.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor&fexp=905602&algorithm=throttle-factor&itag=34&ipbits=8&burst=40&sver=3&expire=1285056000&key=yt1&signature=690F9475D5288F3129F84364427B2B490B6ACE59.45C8F83DEE3DD361855B12AE538EA6349FF8EF9B&factor=1.25&id=d50e6528eb51ad54,18

http://somesite.com/videoplayback?ip=81.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor&fexp=905602&algorithm=throttle-factor&itag=18&ipbits=8&burst=40&sver=3&expire=1285056000&key=yt1&signature=A68EAA3F7A2ECA2BB2BD6C35BF443C03E4BB1172.AD2FF9FDAF046B23F789FE1A7F7882DF9A355DE4&factor=1.25&id=d50e6528eb51ad54,5

http://somesite.com/videoplayback?ip=81.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor&fexp=905602&algorithm=throttle-factor&itag=5&ipbits=8&burst=40&sver=3&expire=1285056000&key=yt1&signature=ABC8ACF6899C46CC992ECB5F6A6FD7E66383EA3D.0C8B707083203DC1153FB26586A94BFAC64D176B&factor=1.25&id=d50e6528eb51ad54

如果您查看这些网址的最末端,则会看到,18,5等附加信息,并且最后一个链接没有这样的扩展名。

现在,我需要在我的代码中尽可能使用最后编号最大的链接。在这个例子中,我需要过滤掉第一个链接,因为它在末尾有最高的整数(18)。

我会使用一系列if()块,但在这种情况下,最后的整数可能会发生变化,因此这不是一个好的解决方案。

所以我基本上需要通过我的数组,检查哪一个链接在结尾有最高整数(注意它只有2位数)然后将它存储在另一个变量中。

任何人都可以提供一些有关如何有效执行此操作的示例/ psudo代码吗?

干杯。

2 个答案:

答案 0 :(得分:1)

即使网址中的其他位置有逗号,也会有效:

$links = array("http://somesite.com/videoplayback?ip=81.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor&fexp=905602&algorithm=throttle-factor&itag=34&ipbits=8&burst=40&sver=3&expire=1285056000&key=yt1&signature=690F9475D5288F3129F84364427B2B490B6ACE59.45C8F83DEE3DD361855B12AE538EA6349FF8EF9B&factor=1.25&id=d50e6528eb51ad54,18", "http://somesite.com/videoplayback?ip=81.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor&fexp=905602&algorithm=throttle-factor&itag=18&ipbits=8&burst=40&sver=3&expire=1285056000&key=yt1&signature=A68EAA3F7A2ECA2BB2BD6C35BF443C03E4BB1172.AD2FF9FDAF046B23F789FE1A7F7882DF9A355DE4&factor=1.25&id=d50e6528eb51ad54,5", "http://somesite.com/videoplayback?ip=81.0.0.0&sparams=id,expire,ip,ipbits,itag,algorithm,burst,factor&fexp=905602&algorithm=throttle-factor&itag=5&ipbits=8&burst=40&sver=3&expire=1285056000&key=yt1&signature=ABC8ACF6899C46CC992ECB5F6A6FD7E66383EA3D.0C8B707083203DC1153FB26586A94BFAC64D176B&factor=1.25&id=d50e6528eb51ad54");

$max = 0;
$highestLink = "";
foreach ($links as $link) {
    $data = explode(",", strrev($link));
    $val = strrev($data[0]);
    if (is_numeric($val)) {
        $val = (int) $val;
        if ($val > $max) {
            $max = $val;
            $highestLink = $link;
        }
    }
}

echo $max;

答案 1 :(得分:0)

对于混淆奖:

array_multisort(
    array_map('intval',preg_replace('/^.*?(,([0-9]+))?$/','$2',$array)),
    $array);
echo end($array);