Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich YouTube-Video-IDs mithilfe regulärer Ausdrücke aus Text extrahieren?

Wie kann ich YouTube-Video-IDs mithilfe regulärer Ausdrücke aus Text extrahieren?

Mary-Kate Olsen
Freigeben: 2024-12-16 19:19:12
Original
709 Leute haben es durchsucht

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

YouTube-Video-IDs aus Text mit regulären Ausdrücken finden

Ihr Ziel ist es, alle YouTube-Video-URLs zu identifizieren und ihre entsprechenden IDs aus einem Text abzurufen Feld. Reguläre Ausdrücke bieten ein leistungsstarkes Werkzeug zur Erfüllung dieser Aufgabe.

Informationen zu YouTube-URL-Formaten

YouTube-URLs gibt es in verschiedenen Formen, darunter:

  • Kurzformat: https://youtu.be/NLqAF9hrVbY
  • Iframe einbetten: https://www.youtube.com/embed/NLqAF9hrVbY
  • Seite ansehen: https://www.youtube.com/watch?v=NLqAF9hrVbY

Regex für die YouTube-Video-ID-Extraktion

Unten finden Sie einen regulären Ausdruck, der alle diese Formate abgleicht und das YouTube-Video erfasst ID:

https?://(?:[0-9A-Z-]+\.)?(?:youtu\.be/|youtube(?:-nocookie)?\.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*
Nach dem Login kopieren

Regex-Erklärung

  • https?://: Entspricht dem Schemateil der URL (HTTP oder HTTPS).
  • (?:[0-9A-Z-] .)?: Optional Subdomain-Teil (z. B. www.).
  • (?:youtu.be/|youtube(?:-nocookie)?.comS*?1): Entspricht dem YouTube-Hostteil. Es verarbeitet mehrere Subdomains und Formate.
  • ([w-]{11}): Erfasst die YouTube-Video-ID, die aus genau 11 alphanumerischen Zeichen besteht und Bindestriche.
  • (?=2|$): Bestätigt, dass das nächste Zeichen nach der ID entweder ein Nicht-Wort-Zeichen ist oder das Ende der Zeichenfolge.
  • (?![?=& %w.-](?:['"]3>|))[?=& %w.-] *: Negativer Lookahead, um vorverlinkte URLs auszuschließen.

Beispiel Code

In PHP können Sie die folgende Funktion verwenden, um die Video-URLs durch Links zu ersetzen:

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;
}
Nach dem Login kopieren

In JavaScript führt der folgende Code einen ähnlichen Vorgang aus:

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>');
}
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonWie kann ich YouTube-Video-IDs mithilfe regulärer Ausdrücke aus Text extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage