Maison >développement back-end >tutoriel php >Comment puis-je extraire les identifiants de vidéos YouTube à partir de texte à l'aide d'expressions régulières ?
Recherche d'identifiants de vidéos YouTube à partir d'un texte avec des expressions régulières
Votre objectif est d'identifier toutes les URL de vidéos YouTube et de récupérer leurs identifiants correspondants à partir d'un texte champ. Les expressions régulières offrent un outil puissant pour accomplir cette tâche.
Comprendre les formats d'URL YouTube
Les URL YouTube se présentent sous diverses formes, notamment :
Regex pour l'extraction d'ID vidéo YouTube
Vous trouverez ci-dessous une expression régulière qui correspond à tous ces formats et capture la vidéo YouTube ID :
https?://(?:[0-9A-Z-]+\.)?(?:youtu\.be/|youtube(?:-nocookie)?\.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|</a>))[?=&+%\w.-]*
Explication Regex
Exemple Code
En PHP, vous pouvez utiliser la fonction suivante pour remplacer les URL des vidéos par des liens :
function linkifyYouTubeURLs($text) { $text = preg_replace('~(?#!js YouTubeId Rev:20160125_1800) # Match non-linked youtube URL in the wild. (Rev:20130823) https?:// # Required scheme. Either http or https. (?:[0-9A-Z-]+\.)? # Optional subdomain. (?: # Group host alternatives. youtu\.be/ # Either youtu.be, | youtube # or youtube.com or (?:-nocookie)? # youtube-nocookie.com \.com # followed by \S*? # Allow anything up to VIDEO_ID, [^\w\s-] # but char before ID is non-ID char. ) # End host alternatives. ([\w-]{11}) # : VIDEO_ID is exactly 11 chars. (?=[^\w-]|$) # Assert next char is non-ID or EOS. (?! # Assert URL is not pre-linked. [?=&+%\w.-]* # Allow URL (query) remainder. (?: # Group pre-linked alternatives. [\'"][^<>]*> # Either inside a start tag, | </a> # or inside <a> element text contents. ) # End recognized pre-linked alts. ) # End negative lookahead assertion. [?=&+%\w.-]* # Consume any URL (query) remainder. ~ix', '<a href="http://www.youtube.com/watch?v=">YouTube link: </a>', $text); return $text; }
En JavaScript, le code suivant effectue une opération similaire :
function linkifyYouTubeURLs(text) { var re = /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube(?:-nocookie)?\.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|</a>))[?=&+%\w.-]*/ig; return text.replace(re, '<a href="http://www.youtube.com/watch?v=">YouTube link: </a>'); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!