2013-02-22 49 views
0
if($_POST['VIDEO']){ 
    $video = parse_url($_POST['VIDEO']); 
    if($video['host'] == 'www.youtube.com' || $video['host'] == 'youtube.com'){ 
     $query = parse_str($video['query']); 
     $v = $query['v']; 
     if(!$v){ 
      //nothing found 
     } else { 
      $videoOutput = 'yt:'.$v; 
     } 
    } 
} 

所以我在一個月前製作了這個腳本。一直工作到昨天晚上。我不明白爲什麼。它一直工作到昨天晚上。它確實解析了url,並且主機是有效的。我得到parse_str和一切突然不起作用。我做了print_r$query,它沒有返回任何數據。如果我是echo這個變量,我會得到一個1。這個文件甚至沒有被觸及,所以我不明白爲什麼它會突然崩潰。parse_str()突然不工作

有什麼建議嗎?

+0

你可能會尋找'的preg_match(」 /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s] )([\ W \ - ] {11})(= [^ \ W \ - ] | $)([=&+%\ W?] *(?:?![\'「] [^ <> ] *> | <\/a>))= +%\ w - ] */I」,$ _ POST [ 「VIDEO」],$匹配)在本網站' – h2ooooooo 2013-02-22 19:56:04

+0

結帳滿例子:http://stackoverflow.com/問題/ 4602956/youtube-get-video-not-working有些人在YT鏈接中出現問題,這些鏈接無法正常工作。上面的例子。 – 2013-02-22 19:56:44

回答

4

語法錯誤:parse_str不返回任何東西。要解析$字符串到名爲$數組的數組:

parse_str($string, $array) 
+0

非常感謝,接受它的時候會讓我(9分鐘)。有趣的是,我聽說有人在這裏工作。它實際上工作了大約一個月。對所發生的事情稍有困惑,但很高興它已經修復。 – Jake 2013-02-22 19:56:13

1

如果你讀了parse_str()的文件,你會看到,它沒有返回值(空),如果你使用它沒有第二個參數。

試試這個:

parse_str($video['query'], $query); 

if (!$query['v']) { 
    ... 
} 
0

根據文檔和php.com樣品,你必須這樣做:

$query = array(); 
parse_str($video['query'],$query);