Question

Comment puis-je saisir l'ID vidéo uniquement à partir des URL de YouTube?

Par exemple,

  

http://www.youtube.com/watch?v=aPm3QVKlBJg

quelque temps les URL contiennent d'autres informations après le « v » comme

  

http://www.youtube.com/watch?v=Z29MkJdMKqs&feature=grec_index

mais je ne veux pas d'autres informations, ID juste vidéo.

Je ne peux penser à utiliser exploser,

$url  = "http://www.youtube.com/watch?v=aPm3QVKlBJg";
$pieces = explode("v=", $url);

mais comment nettoyer les URL comme ça?

  

http://www.youtube.com/watch?v=Z29MkJdMKqs&feature=grec_index

Était-ce utile?

La solution

Vous ne devez jamais utiliser des expressions régulières quand la même chose peut être accompli grâce à des fonctions construite à cet effet.

Vous pouvez utiliser parse_url pour briser l'URL vers le haut dans ses segments, et parse_str pour briser la partie de chaîne de requête dans une clé / tableau de valeurs:

$url = 'http://www.youtube.com/watch?v=Z29MkJdMKqs&feature=grec_index'

// break the URL into its components
$parts = parse_url($url);

// $parts['query'] contains the query string: 'v=Z29MkJdMKqs&feature=grec_index'

// parse variables into key=>value array
$query = array();
parse_str($parts['query'], $query);

echo $query['v']; // Z29MkJdMKqs
echo $query['feature'] // grec_index

L'autre forme d'extraits parse_str variables dans le champ d'application de courant. Vous pouvez construire cela en fonction de trouver et retourner le paramètre v:

// Returns null if video id doesn't exist in URL
function get_video_id($url) {
  $parts = parse_url($url);

  // Make sure $url had a query string
  if (!array_key_exists('query', $parts))
    return null;

  parse_str($parts['query']);

  // Return the 'v' parameter if it existed
  return isset($v) ? $v : null;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top