devdev / in the loop

Ottenere l’ID di un video Youtube dall’URL in PHP

In questo snippet vediamo come ottenere l’ID di un video YouTube, che ci potrà servire per creare un embed, per storarlo in un database, o semplicemente per verificare che l’URL YouTube inserito da un utente sia valido. Lo faremo in PHP, utilizzando due funzioni semplici, evitando così le espressioni regolari, che potrebbero creare problemi e che, come sappiamo, hanno un grado di complessità abbastanza elevato.

Partiamo dalla struttura di un semplice URL:

https://www.youtube.com/watch?v=f4Mc-NYPHaQ

Passando questo indirizzo (come stringa) alle funzioni parse_url() e poi a parse_str(), taglieremo dapprima la parte di stringa che contiene il dominio vero e proprio e otterremo soltanto la parte dei parametri, dalla quale successivamente leggeremo l’ID.

parse_url accetta come parametro una stringa e restituisce un array associativo con i seguenti indici:

  • scheme – ad esempio http
  • host
  • port
  • user
  • pass
  • path
  • querycioè tutto quello dopo il simbolo “?”
  • fragmenttuto quello che viene dopo il cancelletto (#)

Volendo, però, possiamo passare a parse_url() un secondo valore, che dice all’interprete direttamente quale indice tra questi ottenere. In tal caso, otterremo una stringa. A noi, chiaramente interessa la parte dopo il simbolo “?” nella quale c’è l’ID del video. La utilizzeremo, perciò, così:

$query = parse_url( "https://www.youtube.com/watch?v=f4Mc-NYPHaQ", PHP_URL_QUERY );

Adesso che abbiamo isolato la query, che è v=f4Mc-NYPHaQ , vogliamo ottenere la parte dopo il “v=”.

Per farlo, utilizzeremo la funzione parse_str(), che funziona analogamente a $_GET.. ma su una stringa. Accetta, quindi, una stringa con dei valori url encoded e ne crea un array associativo, in questo modo:

parse_str($query, $dati);
$id_youtube=$dati['v'];
echo $id_youtube;
// f4Mc-NYPHaQ

Ed ecco che “v=valore” diventa $dati[‘v’] che contiene “valore”. Mettendo tutto assieme otteniamo:

<?php

$url = "https://www.youtube.com/watch?v=f4Mc-NYPHaQ";
parse_str( parse_url( $url, PHP_URL_QUERY ), $dati );
echo $dati['v'];    
// f4Mc-NYPHaQ

?>
Questo articolo ti è stato utile?
PHP – LETTURA 6 MINUTI PHP 8: l’operatore null-safe
L’introduzione dell’operatore null coalescing con PHP 7 è stato un buon passo avanti per la pulizia del codice, ma non…
Laravel – LETTURA 4 MINUTI Aggiungere phpMyAdmin a Laravel Sail
Anche se a questo punto lo sapete già, è giusto dire che phpMyAdmin è sicuramente il tool dbms open  source…
PHP – LETTURA 4 MINUTI Usare glob() in PHP per elencare i file di una directory
Spesso abbiamo utilizzato (lo so, l’avete fatto anche voi) la combinazione di opendir(), readdir() e closedir() per elencare i file…
PHP – LETTURA 5 MINUTI Installare PHP su macOS Monterey con homebrew (anche su M1)
L’ultima versione di macOS 12 Monterey non porta più con sé preinstallato PHP. Difatti, una nota nel conf http.conf di…
Roba figa da
if (weekend) {
    relax();
}
la nostra newsletter, ogni tanto.