2010-01-24 9 views

Répondre

11

Je ne voudrais pas utiliser preg_match() pour cela. Je pense que parse_url() est probablement un meilleur choix. Vous pouvez y passer une chaîne d'URL, et il la décomposera dans tous les sous-composants pour vous. Je ne sais pas à quoi ressemblent les URL vidéo spécifiques pour les sites que vous avez mentionnés, mais je suis sûr que vous pourriez trouver des critères d'identification pour chacun que vous pourriez utiliser avec les résultats de parse_url() à identifier. À titre d'exemple, voici ce que la rupture d'un lien YouTube pourrait ressembler à:

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

Vous pouvez probablement identifier en fonction du nom d'hôte et le chemin dans ce cas.

+0

de Nice pourboire mais méfiez-vous: maintenant il est juste chemin un nd requête – Cogicero

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

Je ne sais pas comment vous obtenez cette URL, mais vous pouvez vérifier « regarder » au lieu de www.youtube.com (depuis les liens vidéo youtube ont généralement le chemin que montre? Quelque chose.

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

     } 
Questions connexes