Olá pessoal,
Se você já trabalhou com o youtube, provavelmente você precisou de pegar o código do video.
Fiz aqui uma expressao regular que atende algumas das possíveis urls do yoube que podem conter esses códigos.
[php]
//Urls possíveis
//http://youtu.be/r9dWsSYStRM
//http://www.youtube.com/watch?v=K7ToNJHgp-w
//http://www.youtube.com/v/dTaD9cd8hvw
//http://www.youtube.com/watch?v=0Tb8Jo11uGo&feature=related
[/php]
A regex seria
[php]
"/youtu(be.com|.b)(\/v\/|\/watch\\?v=|e\/)(.{11})/"
[/php]
Para usar de forma a pegar todos os códigos de vídeo de uma string, sem que eles se repitam.
[php]
//Lista de urls
$str = "
//http://youtu.be/r9dWsSYStRM
//http://www.youtube.com/watch?v=K7ToNJHgp-w
//http://www.youtube.com/v/dTaD9cd8hvw
//http://www.youtube.com/watch?v=0Tb8Jo11uGo&feature=related
//http://www.youtube.com/watch?v=0Tb8Jo11uGo
//http://www.youtube.com/watch?feature=player_detailpage&v=6PDmZnG8KsM";
//Regex
//$regex = "/youtu(be.com|.b)(\/v\/|\/watch\\?v=|e\/)(.{11})/";
//UPDATE – 22-11-2011
$regex = "#youtu(be.com|.b)(/v/|/watch\\?v=|e/|/watch(.+)v=)(.{11})#";
preg_match_all($regex , $str, $matches);
if(!empty($matches[4]))
{
$codigos_unicos = array();
$quantidade_videos = count($matches[4]);
foreach($matches[4] as $code)
{
if(!in_array($code,$codigos_unicos))
array_push($codigos_unicos,$code);
}
echo ‘códigos encontrados<br/><pre>’;
print_r($codigos_unicos);
}else{
die(‘Nenhuma url válida encontrada’);
}
[/php]
Se alguem tiver alguma sugestão de melhoria, favor me enviar que eu ficarei agradecido.
Espero que este post possa ser util.
Obrigado.
