2010-01-24 14 views

risposta

11

Non vorrei usare preg_match() per questo. Penso che parse_url() sia probabilmente una scelta migliore. Puoi passare una stringa URL al suo interno e la suddividerà in tutti i sottocomponenti.

Non so quali siano gli URL di video specifici per quei siti che hai citato, ma sono sicuro che potresti trovare alcuni criteri identificativi per ognuno che potresti utilizzare con i risultati di parse_url() da identificare. A titolo di esempio, ecco quello che la rottura di un link di YouTube potrebbe essere simile:

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

Si potrebbe probabilmente identificarlo in base al nome host e il percorso in questo caso.

+0

Nizza punta ma attenzione: ora è solo percorso un nd query – Cogicero

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

Non so come si ottiene che url, ma si potrebbe desiderare di verificare la presenza di "guardare" anziché solo www.youtube.com (dal youtube collegamenti video di solito hanno il percorso come orologio? Qualcosa.

$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'; 

     } 
Problemi correlati