我有一个数组,它有近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);