2015-03-16 2 views
1
Array 
(
    [display_id] => 8sPj0Ic8KQ8 
    [formats] => Array 
     (
      [0] => Array 
       (
        [http_headers] => Array 
         (
          [Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 
          [Accept-Language] => en-us,en;q=0.5 
          [Accept-Encoding] => gzip, deflate 
          [Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
          [User-Agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 
         ) 

        [format] => nondash-171 - audio only (DASH audio) 
        [url] => https://r9---sn-a5m7lnel.googlevideo.com/videoplayback?keepalive=yes&itag=171&requiressl=yes&signature=7759397C37EC0668E5FE39474B009809F26CBB13.42BE0F5C6E5BA6D7B6C1F4E39AB494B47E24D3FF&mm=31&gir=yes&dur=210.862&id=o-AH0zuSgN411QzK7H-qW3BTqHY_Rn09uGX4CG-byG82HF&sver=3&fexp=900504%2C900720%2C905648%2C907263%2C917000%2C927622%2C934954%2C937420%2C9406090%2C9406556%2C9406978%2C9407103%2C9407415%2C943917%2C945094%2C948124%2C951511%2C951703%2C952302%2C952612%2C952901%2C955301%2C957201%2C959701&clen=3196194&source=youtube&mv=m&mt=1426520286&ms=au&expire=1426541958&lmt=1411477600106977&mime=audio%2Fwebm&upn=0AAhyEqh4fo&gcr=us&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&key=yt5&pl=21&initcwndbps=1905000&ipbits=0&ip=209.95.42.9&ratebypass=yes 
        [vcodec] => none 
        [format_note] => DASH audio 
        [abr] => 128 
        [player_url] => 
        [ext] => webm 
        [preference] => -10050 
        [format_id] => nondash-171 
       ) 

      [1] => Array 
       (
        [http_headers] => Array 
         (
          [Accept-Charset] => ISO-8859-1,utf-8;q=0.7,*;q=0.7 
          [Accept-Language] => en-us,en;q=0.5 
          [Accept-Encoding] => gzip, deflate 
          [Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
          [User-Agent] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36 
         ) 

        [container] => m4a_dash 
        [format] => nondash-140 - audio only (DASH audio) 
        [url] => https://r9---sn-a5m7lnel.googlevideo.com/videoplayback?keepalive=yes&itag=140&requiressl=yes&signature=7C31A2F3665FE0A83A61176A4CA8E5043D88FE04.3D7E936F3B96AFBB02F0D938C4D497A9D3BACE9A&mm=31&gir=yes&dur=210.930&id=o-AH0zuSgN411QzK7H-qW3BTqHY_Rn09uGX4CG-byG82HF&sver=3&fexp=900504%2C900720%2C905648%2C907263%2C917000%2C927622%2C934954%2C937420%2C9406090%2C9406556%2C9406978%2C9407103%2C9407415%2C943917%2C945094%2C948124%2C951511%2C951703%2C952302%2C952612%2C952901%2C955301%2C957201%2C959701&clen=3386965&source=youtube&mv=m&mt=1426520286&ms=au&expire=1426541958&lmt=1417194435725180&mime=audio%2Fmp4&upn=0AAhyEqh4fo&gcr=us&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&key=yt5&pl=21&initcwndbps=1905000&ipbits=0&ip=209.95.42.9&ratebypass=yes 
        [vcodec] => none 
        [format_note] => DASH audio 
        [abr] => 128 
        [player_url] => 
        [ext] => m4a 
        [preference] => -10050 
        [format_id] => nondash-140 
        [acodec] => aac 
       ) 

Я хочу, чтобы получить [url] для определенного формата, но мне нужно, чтобы соответствовать кодуПоиск по ключевым = значение в массиве многомерном, где условие поиска содержит регулярное выражение

Например предположим я хочу, чтобы получить url, который имеет 171 в format_id. В этом случае выход должен быть https://r9---sn-a5m7lnel.googlevideo.com/videoplayback?keepalive=yes&itag=171&requiressl=yes&signature=7759397C37EC0668E5FE39474B009809F26CBB13.42BE0F5C6E5BA6D7B6C1F4E39AB494B47E24D3FF&mm=31&gir=yes&dur=210.862&id=o-AH0zuSgN411QzK7H-qW3BTqHY_Rn09uGX4CG-byG82HF&sver=3&fexp=900504%2C900720%2C905648%2C907263%2C917000%2C927622%2C934954%2C937420%2C9406090%2C9406556%2C9406978%2C9407103%2C9407415%2C943917%2C945094%2C948124%2C951511%2C951703%2C952302%2C952612%2C952901%2C955301%2C957201%2C959701&clen=3196194&source=youtube&mv=m&mt=1426520286&ms=au&expire=1426541958&lmt=1411477600106977&mime=audio%2Fwebm&upn=0AAhyEqh4fo&gcr=us&sparams=clen%2Cdur%2Cgcr%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Ckeepalive%2Clmt%2Cmime%2Cmm%2Cms%2Cmv%2Cpl%2Crequiressl%2Csource%2Cupn%2Cexpire&key=yt5&pl=21&initcwndbps=1905000&ipbits=0&ip=209.95.42.9&ratebypass=yes

+0

Почему вы не используете 'Sprintf()' при создании многомерный массив, как: '$ массива [ 'формат'] [ 'URL'] =" https: // г9 ---sn-a5m7lnel.googlevideo.com/videoplayback?keepalive=yes&itag=%s&requiressl=yes "; $ array ['format'] ['format_id'] = 171; sprintf ($ array ['format'] ['url'], $ array ['format'] ['format_id']); ' – lrd

+0

@lrd массив на самом деле json – user2650277

+0

Итак, почему бы вам не сделать перебирать массив и возвращать 'url', если соответствует' format_id'? Какова ваша проблема? – aergistal

ответ

0

Довольно простой. Только петли и проверьте:

foreach($array['formats'] as $value) { 
    if(strpos($value['format_id'], 171) !== false) { 
     $url = $value['url']; 
     break; 
    } 
} 

echo $url; 
Смежные вопросы