現在の位置: ホーム> 最新記事一覧> parse_urlでYouTubeビデオIDを抽出する方法は?

parse_urlでYouTubeビデオIDを抽出する方法は?

gitbox 2025-05-29

ビデオリンク、特にYouTubeなどのプラットフォームを処理する場合、ビデオの一意の識別子(ビデオID)を抽出することは、多くのアプリケーションシナリオで一般的な要件です。たとえば、ビデオIDのみを保持することは、ユーザーがサビされたYouTubeリンクをWebページに埋め込み、データベースに保存する場合、より効率的で一貫性があります。 PHPでは、組み込みのparse_url関数を使用してこの関数を実装できます。

この記事では、 parse_urlと他の機能を組み合わせることにより、YouTubeリンクからビデオIDを抽出する方法を紹介します。

1。YouTubeリンク形式

実際のアプリケーションでは、YouTubeのリンク形式には次の共通形式がある場合があります。

  1. 標準リンク:

     https://www.youtube.com/watch?v=VIDEO_ID
    
  2. ショートリンク:

     https://youtu.be/VIDEO_ID
    
  3. 埋め込みリンク:

     https://www.youtube.com/embed/VIDEO_ID
    

2。parse_urlを使用して情報を抽出します

Parse_url関数は、スキーム、ホスト、パス、クエリなどの複数の部分にURLを分解できます。この機能を使用して、YouTubeリンクを簡単に分析できます。

 function extractYouTubeID($url) {
    $parsedUrl = parse_url($url);

    // 標準リンク https://www.youtube.com/watch?v=VIDEO_ID
    if (isset($parsedUrl['host']) && strpos($parsedUrl['host'], 'youtube.com') !== false) {
        if (isset($parsedUrl['path']) && $parsedUrl['path'] === '/watch') {
            if (isset($parsedUrl['query'])) {
                parse_str($parsedUrl['query'], $queryParams);
                if (isset($queryParams['v'])) {
                    return $queryParams['v'];
                }
            }
        }

        // 埋め込みリンク https://www.youtube.com/embed/VIDEO_ID
        if (strpos($parsedUrl['path'], '/embed/') === 0) {
            return substr($parsedUrl['path'], strlen('/embed/'));
        }
    }

    // 短いリンク https://youtu.be/VIDEO_ID
    if (isset($parsedUrl['host']) && $parsedUrl['host'] === 'youtu.be') {
        return ltrim($parsedUrl['path'], '/');
    }

    return null; // 認識されていない形式
}

3。例の使用

$links = [
    'https://www.youtube.com/watch?v=abc123XYZ',
    'https://youtu.be/abc123XYZ',
    'https://www.youtube.com/embed/abc123XYZ',
    'https://gitbox.net/watch?v=abc123XYZ', // いいえ YouTube ドメイン名,返す必要があります null
];

foreach ($links as $link) {
    $videoId = extractYouTubeID($link);
    echo "リンク:$link\n";
    echo "ビデオ ID:" . ($videoId ?? '識別されていません') . "\n\n";
}

4。注意すべきこと

  • 上記のコードは3つの一般的なリンクフォームを考慮していますが、実際に使用すると、さまざまなパラメーターの順序とタイムスタンプパラメーターが添付される可能性もあります。堅牢性を向上させるために、 parse_strの後にパラメーターでより多くの検証を実行できます。

  • ドメイン名を交換したり、非Youtubeリンクを識別したりして、信頼できるソースのみが処理されるようにする場合は特に注意してください。

結論

Parse_urlParse_strなどの組み込み関数を介して、PHPはURLを効率的に解析し、特定のパラメーターを抽出できます。この方法は単純であるだけでなく、優れた保守性もあります。それを一般的な機能にカプセル化します。これは、さまざまなプロジェクトで再利用され、開発効率を向上させることができます。