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:

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ì:

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:

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