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 ?

Comment puis-je extraire les identifiants de vidéos YouTube à partir de texte à l'aide d'expressions régulières ?

Mary-Kate Olsen
Libérer: 2024-12-16 19:19:12
original
825 Les gens l'ont consulté

How Can I Extract YouTube Video IDs from Text Using Regular Expressions?

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 :

  • Format court : https://youtu.be/NLqAF9hrVbY
  • Intégrer l'iframe : https://www.youtube.com/embed/NLqAF9hrVbY
  • Page de lecture : https://www.youtube.com/watch?v=NLqAF9hrVbY

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-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*
Copier après la connexion

Explication Regex

  • https?:// : correspond à la partie schéma de l'URL (HTTP ou HTTPS).
  • (?:[0-9A-Z-] .)? : Facultatif partie de sous-domaine (par exemple, www.).
  • (?:youtu.be/|youtube(?:-nocookie)?.comS*?1) : Correspond à la partie hôte YouTube. Il gère plusieurs sous-domaines et formats.
  • ([w-]{11}) : capture l'ID de la vidéo YouTube, qui se compose d'exactement 11 caractères alphanumériques et traits d'union.
  • (?=2|$) : affirme que le caractère suivant après l'ID est soit un caractère autre qu'un mot, soit la fin de la chaîne.
  • (?![?=& %w.-](?:['"]3>|))[?=& %w.-] * : analyse anticipée négative pour exclure les URL pré-liées.

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.
          [?=&amp;+%\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.
        [?=&amp;+%\w.-]*       # Consume any URL (query) remainder.
        ~ix', '<a href="http://www.youtube.com/watch?v=">YouTube link: </a>',
        $text);
    return $text;
}
Copier après la connexion

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-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*/ig;
    return text.replace(re, '<a href="http://www.youtube.com/watch?v=">YouTube link: </a>');
}
Copier après la connexion

  1. ws-
  2. w-
  3. <>

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal