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
Lepaskan: 2024-12-16 19:19:12
asal
709 orang telah melayarinya

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.-]*
Salin selepas log masuk

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;
}
Salin selepas log masuk

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>');
}
Salin selepas log masuk

  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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan