2016-12-19 16 views
0

YouTubeの動画URLを確認するコードがPHPで有効です。YouTtubeの動画を確認する方法URLは現在有効ですか?

<?php 
     $rx = '~ 
     ^(?:https?://)?    # Optional protocol 
     (?:www\.)?     # Optional subdomain 
     (?:youtube\.com|youtu\.be) # Mandatory domain name 
     /watch\?v=([^&]+)   # URI with video id as capture group 1 
     ~x'; 

     $has_match = preg_match($rx, $vid1, $matches); 
?> 

このURLの場合も同様です。

https://www.youtube.com/watch?v=cpPG0bKHYKc

しかし、それはのようないくつかのURLに正しく動作しません:あなたの正規表現の状態プロトコルおよびサブドメインでのコメントとして

https://youtu.be/auz2t9nBcwU

+0

私は正確な情報を取得し、私のブログのビデオURLを追加するつもりです。 – ChanDongming

+0

ご存知のように、https://youtu.be/auz2t9nBcwUもyoutubの有効な動画URLですが、私のモジュールはこれを修正URLであると認識しません。 – ChanDongming

+0

$ vid1は動画のURLです。 https://www.youtube.com/watch?v=cpPG0bKHYKc – ChanDongming

答えて

1

はオプションです。どちらの形式のドメイン名も許可されます。正規表現の最後の部分は、問題にぶつかるところです。 /watch\?v=以外には&以外のものが必要です。 2番目のURLには/watchが含まれていません。 /watchをオプションにすることができますが、youtube.com/anythingを許可することができます。あなたの変更に許可されたフォーマットを入れることをお勧めします。何かのように:

^(?:https?://)?(?:www\.)?(?:youtube\.com/watch\?v=([^&\n]+)|youtu\.be/([a-zA-Z\d]+))$ 

あなたのためにそれをすると思います。

デモ:https://regex101.com/r/TKPtPD/1

[a-zA-Z\d]+youtu.beドメインの後に有効な文字であると思われるものもあります。より多くの文字が存在する場合は、そのクラスを更新する必要があります。

+0

それは本当に私にとって有益です。 ありがとうございました。 – ChanDongming

+0

@ ChanDongmingこれが質問に答えるなら、答えを受け入れてください。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – chris85

関連する問題