Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Saya Boleh Mengeluarkan ID Video YouTube daripada Teks Menggunakan Ungkapan Biasa?

Bagaimanakah Saya Boleh Mengeluarkan ID Video YouTube daripada Teks Menggunakan Ungkapan Biasa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-16 19:19:12710semak imbas

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

Mencari ID Video YouTube daripada Teks dengan Ungkapan Biasa

Matlamat anda adalah untuk mengenal pasti semua URL video YouTube dan mendapatkan ID yang sepadan daripada teks padang. Ungkapan biasa menawarkan alat yang berkuasa untuk melaksanakan tugas ini.

Memahami Format URL YouTube

URL YouTube datang dalam pelbagai bentuk, termasuk:

  • Format ringkas: https://youtu.be/NLqAF9hrVbY
  • Benamkan iframe: https://www.youtube.com/embed/NLqAF9hrVbY
  • Tonton halaman: https://www.youtube.com/ watch?v=NLqAF9hrVbY

Regex untuk ID Video YouTube Pengekstrakan

Di bawah ialah ungkapan biasa yang sepadan dengan semua format ini dan menangkap ID video YouTube:

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

Penjelasan Regex

  • https?://: Padan dengan bahagian skema URL (HTTP atau HTTPS).
  • (?:[0-9A-Z-] .)?: Bahagian subdomain pilihan (mis., www.).
  • (?:youtu.be/|youtube(?:-nocookie)?.comS*?1) : Padan dengan bahagian hos YouTube. Ia mengendalikan berbilang subdomain dan format.
  • ([w-]{11}): Menangkap ID video YouTube, yang mengandungi tepat 11 aksara abjad angka dan tanda sempang.
  • (?=2|$): Menegaskan bahawa aksara seterusnya selepas ID ialah sama ada aksara bukan perkataan atau hujung rentetan.
  • (?![?=& %w.-](?:['"]3>|))[?=& %w.-] *: Pandangan negatif ke hadapan untuk mengecualikan prapautan URL.

Kod Contoh

Dalam PHP, anda boleh menggunakan fungsi berikut untuk menggantikan URL video dengan pautan:

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;
}

Dalam JavaScript, kod berikut melakukan yang serupa operasi:

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>');
}

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengeluarkan ID Video YouTube daripada Teks Menggunakan Ungkapan Biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn