我寫了一個腳本做一次,YouTube的URL是更多詳細信息通過「l」(小寫字母「L」)下的「POST」發佈。
不幸的是,我從來沒有把它整合到我的項目,所以它沒有經過廣泛的測試,看看它是如何做的。如果失敗,則調用invalidURL
並將URL作爲參數,如果成功,則使用來自URL的ID調用validURL
。
此腳本可能並不完全符合您的要求,因爲它只能檢索當前正在播放的視頻的ID - 但您應該可以輕鬆修改它。
if (isset($_POST['l'])) {
$ytIDLen = 11;
$link = $_POST['l'];
if (preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $link)) {
$urlParts = parse_url($link);
//$scheme
//$host
//$path
//$query["v"]
if (isset($urlParts["scheme"])) {
if (($urlParts["scheme"] == "http") || ($urlParts["scheme"] == "https")) {
//$scheme = "http";
} else invalidURL($link);
} //else $scheme = "http";
if (isset($urlParts["host"])) {
if (($urlParts["host"] == "www.youtube.com") || ($urlParts["host"] == "www.youtube.co.uk") || ($urlParts["host"] == "youtube.com") || ($urlParts["host"] == "youtube.co.uk")) {
//$host = "www.youtube.com";
if (isset($urlParts["path"])) {
if ($urlParts["path"] == "/watch") {
//$path = "/watch";
if (isset($urlParts["query"])) {
$query = array();
parse_str($urlParts["query"],$query);
if (isset($query["v"])) {
$query["v"] = preg_replace("/[^a-zA-Z0-9\s]/", "", $query["v"]);
if (strlen($query["v"]) == $ytIDLen) {
validUrl($query["v"]);
} else invalidURL($link);
} else invalidURL($link);
} else invalidURL($link);
} else invalidURL($link);
} else invalidURL($link);
} else invalidURL($link);
} else invalidURL($link);
} else invalidURL($link);
}
您鏈接到的問題的答案看起來相當全面。你有什麼樣的問題? – JJJ
偏音字符串/網址,播放列表ID。除此之外,我不是真正的正則表達式國王... – TheDevRay