2010-01-24 9 views

Odpowiedz

11

Nie użyłbym preg_match() do tego. Myślę, że parse_url() jest prawdopodobnie lepszym wyborem. Możesz przekazać do niego ciąg URL, który podzieli go na wszystkie podskładniki.

Nie wiem, jak wyglądają konkretne adresy URL wideo dla witryn, które wymieniłeś, ale jestem pewien, że możesz wymyślić pewne kryteria identyfikacyjne dla każdego, którego możesz użyć, aby zidentyfikować wyniki z parse_url(). Jako przykład, oto co podział łącza YouTube może wyglądać następująco:

$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 
) 
*/ 

Można prawdopodobnie zidentyfikować na podstawie nazwy hosta i ścieżki w tym przypadku.

+0

Nicea wskazówka, ale uwaga: teraz to tylko ścieżka nd zapytanie – Cogicero

2
if (preg_match ("/\b(?:vimeo|youtube|dailymotion)\.com\b/i", $url)) { 
    echo "It's a video"; 
} 
1

nie wiem jak masz ten link, ale warto sprawdzić „oglądać”, a nie tylko www.youtube.com (od łącza wideo YouTube mają zazwyczaj ścieżkę jako zegarek? Coś.

$res = parse_url("http://www.youtube.com/watch?v=Sv5iEK-IEzw"); 
if (preg_match("/\/watch/" , $res["path"] )){ 
    echo "found video\n "; 
} 
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'; 

     }