从数组构造清晰的URL

时间:2014-08-06 13:25:50

标签: php arrays youtube preg-replace

我有一个数组,它有近150个值,如

    { [0]=> string(670)
    "https://r3---sn-oguesnl6.googlevideo.com/vide.......................xpire=1407349366&mws=yes" [1]=> string(36) "type=video/mp4; codecs="avc1.640028"" [2]=> string(10)
    "init=0-712" [3]=> string(8) "itag=137" [4]=> string(15) "bitrate=4138626" [5]=> string(9) "=713-1080" [6]=> string(20) "lmt=1407180456062432" [7]=> string(28) "clen=52223505,size=1920x1080" .............}

等等。上面我使用var_dum来显示数组长度。阵列中有近10个网址,所有网址的长度均为500或更多。所以我不需要除字符串长度500或更多以外的所有数组值。我想我可以使用if和for循环来回显所有网址,但我没有把它放在一起。

在获取url数组之后还有另一个问题。在url数组中,有时它可能包含第一个像

"url=https://r3---sn-oguesnl6.googlevideo.com....." 

并且最后像

"url=https://r3---sn-oguesnl6.googlevideo.com.....xpire=1407349366&mws=yes,itag=137"

我想删除https之前和#34;之后的所有字符,"包括它。我想回复普通网址。

如果可能的话,我想更进一步。在数组中有另一个长度为8个字符的数组。实际上我想采用itag值。

[3]=> string(8) "itag=137"

但字符串长度总是不一样,有时像

[3]=> string(12) "type=mp4,itag=137"

itag值将始终改变为" itag = 136"。

最后我想要一个像这样的结果

    136 => https://r3---sn-oguesnl6.googlevideo.com/videoplayback?ms=au&mv.......
    137 => https://r2---sn-oguesnl6.googlevideo.com/videoplayback?ms=au&mv.......
    22 => https://r4---sn-oguesnl6.googlevideo.com/videoplayback?ms=au&mv.......
    37 => https://r7---sn-oguesnl6.googlevideo.com/videoplayback?ms=au&mv.......
    .......................................

如果不是,我可能只想选择网址。任何帮助将不胜感激。

更新

preg_match("(var ytplayer(.*)ytplayer.config.loaded)", $downloaded_page, $match);
$link = $match[1];
$adaptive_fmts = preg_match("(adaptive_fmts(.*)})", $link, $adaptive);
$stream_map = preg_match("(url_encoded_fmt_stream_map(.*)})", $link, $stream);
$adaptive_link = urldecode($adaptive[1]);
$stream_link = urldecode($stream[1]);
preg_match("(url=(.*)\\\\)", $adaptive_link, $final);
$search_array = array('u0026','u0026index','u0026clen','index','u0026size','u0026init','u0026lmt','u0026url=','u0026bitrate','u0026type');
$trimmed = str_replace($search_array, '', $final[1]);
$one = explode('\\' , $trimmed);
var_dump($one);

0 个答案:

没有答案