如果我們要讓使用者可以輸入 youtube 網址後儲存到資料庫並嵌入在自己的網頁上,可以使用我們之前提過的 parse_url 的方式,把網址中的 v 的變數過濾出來像這樣:
$url="https://www.youtube.com/watch?v=3rwzYW8MDMM"; parse_str( parse_url( $url, PHP_URL_QUERY ), $my_array_of_vars ); echo $my_array_of_vars['v'];
像這樣我們應該可以得到 id=3rwzYW8MDMM 的結果,可是取得 youtube 的網址還可能從短網址或嵌入的 code 拿到,這樣用這個變數的方法就會失效,還好有找到有人寫好的正規表達式的方法把網址過濾出來,可以參考以下寫法:
//常見的 youtube 網址類型 // http://youtu.be/dQw4w9WgXcQ // http://www.youtube.com/embed/dQw4w9WgXcQ // http://www.youtube.com/watch?v=dQw4w9WgXcQ // http://www.youtube.com/?v=dQw4w9WgXcQ // http://www.youtube.com/v/dQw4w9WgXcQ // http://www.youtube.com/e/dQw4w9WgXcQ // http://www.youtube.com/user/username#p/u/11/dQw4w9WgXcQ // http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/dQw4w9WgXcQ // http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ // http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match); $youtube_id = $match[1];
像這樣我們就可以拿到 youtube id 了,有需要的可以試試看。
參考出處:
Extract the YouTube Video ID from a URL in PHP