ホームページ >バックエンド開発 >PHPチュートリアル >正規表現を使用してテキストから YouTube 動画 ID を抽出するにはどうすればよいですか?

正規表現を使用してテキストから YouTube 動画 ID を抽出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-16 19:19:12712ブラウズ

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

正規表現を使用してテキストから YouTube 動画 ID を検索する

あなたの目標は、すべての YouTube 動画 URL を識別し、テキストから対応する ID を取得することです。分野。正規表現は、このタスクを実行するための強力なツールです。

YouTube URL 形式について

YouTube URL には、次のようなさまざまな形式があります。

  • 短い形式: https://youtu.be/NLqAF9hrVbY
  • 埋め込みiframe: https://www.youtube.com/embed/NLqAF9hrVbY
  • 動画視聴ページ: https://www.youtube.com/watch?v=NLqAF9hrVbY

YouTube ビデオ ID 抽出の正規表現

以下は正規表現です。これらすべての形式に一致し、YouTube ビデオ ID をキャプチャします:

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

正規表現の説明

  • https?://: 一致URL のスキーム部分 (HTTP またはHTTPS).
  • (?:[0-9A-Z-] .)?: オプションのサブドメイン部分 (例: www.).
  • (?:youtu.be/|youtube(?:-nocookie)?.comS*?1) :YouTubeのホスト部分と一致します。複数のサブドメインと形式を処理します。
  • ([w-]{11}): 正確に 11 文字の英数字と文字で構成される YouTube 動画 ID をキャプチャします。ハイフン。
  • (?=2|$): ID の後の次の文字が非単語文字であるか、または文字列の終わり。
  • (?![?=& %w.-](?:['"]3>|))[?=& %w.-] *: 事前リンクを除外するための否定先読みURL。

コード例

PHP では、次の関数を使用してビデオ URL をリンクに置き換えることができます:

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

JavaScript では、次のコードは同様の処理を実行します。操作:

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. <>

以上が正規表現を使用してテキストから YouTube 動画 ID を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。