j'ai écrit un script pour faire une fois où l'URL YouTube est Posté via "POST" sous la clé "l" (minuscule "L").
Malheureusement, je n'ai jamais réussi à l'incorporer dans mon projet, donc il n'a pas été testé intensivement pour voir comment cela se passe. En cas d'échec, il appelle invalidURL
avec l'URL en paramètre, s'il réussit, il appelle validURL
avec l'ID de l'URL.
Ce script n'est peut-être pas exactement ce que vous cherchez, car il récupère SEULEMENT l'ID de la vidéo en cours de lecture - mais vous devriez être capable de le modifier facilement.
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);
}
La réponse à la question que vous avez interrogée semble assez complète. Quel genre de problèmes avez-vous avec? – JJJ
Les partials chaînes/urls, identifiants playlist. En plus, je ne suis pas vraiment un roi regex ... – TheDevRay