';

Olá pessoal,
Se você já trabalhou com o youtube, provavelmente você precisou de pegar o código do video.
Youtube URL

Fiz aqui uma expressao regular que atende algumas das possíveis urls do yoube que podem conter esses códigos.

//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

A regex seria

"/youtu(be.com|.b)(\/v\/|\/watch\\?v=|e\/)(.{11})/"

Para usar de forma a pegar todos os códigos de vídeo de uma string, sem que eles se repitam.

//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');
}

Se alguem tiver alguma sugestão de melhoria, favor me enviar que eu ficarei agradecido.

Espero que este post possa ser util.
Obrigado.


@emersonbroga

Programador há mais de 15 anos, sou formado em Desenvolvimento de Sistemas pela Faculdade Pitágoras e pós-graduado em Gestão Estratégica de Marketing pela PUC Minas. Trabalhei em diversas agências de publicidade e desenvolvimento de software e atualmente trabalho em projetos internacionais como FOX.com, FXNetworks.com, NatGeo.com entre outros. Estou atualmente dedicando meu tempo a ensinar programação em meu blog e redes sociais. Saiba mais em https://emersonbroga.com/e/sobre/.