';

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.
[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.


7 Comments

Bruno · 2011-05-06 at 16:56

Puxa vida eu tava precisando disso…

Nussa!!!

\o/

#TODOS agradece!

Miro · 2011-05-30 at 13:13

Cara muito bom! Vou tomar vergonha na cara e começar a estudar expressões regulares. Valeu mesmo!

Josué · 2011-08-02 at 06:17

cara otimo post salvou minha madrugada, consegui adptar ao projeto do videozer.
obrigado.

Felipe · 2011-11-22 at 15:08

tem um tipo de endereço que não pega:
Por exemplo:
http://www.youtube.com/watch?feature=player_detailpage&v=6PDmZnG8KsM
Isso eu tiro apertando botao direito do mouse e escolho a 1ª opção (Copiar URL do Vídeo)

    @emersonbroga · 2011-11-22 at 16:46

    Valeu demais pela dica!
    Quando esse post foi criado o youtube ainda não dava essa opçao do botão direito, mas agora com sua dica a regex já foi atualizada.

    Obrigado por visitar o blog.

Arthur Lehdermann · 2012-01-26 at 08:54

Cara, EXCELENTE!

Problema:
Mas faltou para as URLs com /embed/codigo:
http://www.youtube.com/embed/sEhy-RXkNo0

Solução:
Adicionei “/embed/|” e funcionou 100%:
$regex = “#youtu(be.com|.b)(/embed/|/v/|/watch\?v=|e/|/watch(.+)v=)(.{11})#”;

    Anonymous · 2012-01-26 at 09:54

    Valeu Arthur…

    Depois vou criar uma classe bacana com isso e colocar no github pra galera ir melhorando!

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *