6

URLがyoutube/vimeo/またはdailymotionのビデオリンクであるかどうかを確認するのに最適なpreg_match構文は何ですか?

難しい場合は、ドメイン名を確認するだけです。

ありがとう

4

4 に答える 4

11

私はこれには使いませんpreg_match()parse_url()がおそらくより良い選択だと思います。URL 文字列を渡すと、すべてのサブコンポーネントに分割されます。

あなたが言及したサイトの特定のビデオ URL がどのように見えるかはわかりませんが、特定するために の結果で使用できるそれぞれの特定基準を考え出すことができると確信していますparse_url(). 例として、YouTube リンクの内訳は次のようになります。

$res = parse_url("http://www.youtube.com/watch?v=Sv5iEK-IEzw");
print_r($res);

/* outputs: 
Array (
    [scheme] => http
    [host] => www.youtube.com
    [path] => /watch
    [query] => v=Sv5iEK-IEzw
)
*/

この場合、おそらくホスト名とパスに基づいて識別できます。

于 2010-01-25T00:05:52.577 に答える
8

$location = 'your url';

if(preg_match('/http:\/\/www\.youtube\.com\/watch\?v=[^&]+/', $location, $vresult)) {

          $type= 'youtube';

      } elseif(preg_match('/http:\/\/(.*?)blip\.tv\/file\/[0-9]+/', $location, $vresult)) {


          $type= 'bliptv';

      } elseif(preg_match('/http:\/\/(.*?)break\.com\/(.*?)\/(.*?)\.html/', $location, $vresult)) {

          $type= 'break';

      } elseif(preg_match('/http:\/\/www\.metacafe\.com\/watch\/(.*?)\/(.*?)\//', $location, $vresult)) {

          $type= 'metacafe';

      } elseif(preg_match('/http:\/\/video\.google\.com\/videoplay\?docid=[^&]+/', $location, $vresult)) {

          $type= 'google';

      } elseif(preg_match('/http:\/\/www\.dailymotion\.com\/video\/+/', $location, $vresult)) {

          $type= 'dailymotion';

      }
于 2011-06-29T07:14:27.697 に答える
2
if (preg_match ("/\b(?:vimeo|youtube|dailymotion)\.com\b/i", $url)) {
   echo "It's a video";
}
于 2010-01-25T00:05:58.293 に答える
1

どうやってその URL を取得したのかわかりませんが、www.youtube.com だけでなく、「watch」を確認することをお勧めします (YouTube ビデオ リンクには通常、watch?something.

$res = parse_url("http://www.youtube.com/watch?v=Sv5iEK-IEzw");
if ( preg_match( "/\/watch/" , $res["path"]  ) ){
    echo "found video\n ";
}
于 2010-01-25T00:31:09.187 に答える