Código complexo YouTube!
Bom pessoal, no meu blogue tenho imagens ou vídeos como destaque e estou tendo uma dificuldade, os vídeos que eu adicione são do YouTube no momento, e antes eu adicionava o código de compartilhamento do vídeo, isso tava xato para meus futuros colunistas podia ser algo que atrasariam eles, e resolvi colocar a URL do vídeo apenas, mas estou tendo dificuldades quanto a estrutura da URL, visto que nem sempre ela mantem um padrão! vejamos!
URL NO NAVEGADOR
CÓDIGO DE INCORPORAÇÃO
URL DE INCORPORAÇÃO
Notem a diferença entre URL's
a única parte que tem igual é o identificador do vídeo que e este!
Ele nunca muda e notando isso e fiz o seguinte código.
isso está funcionando legal quase sem problemas, e meu código php grava as duas variáveis no meu banco que no final saem como!
Resultado final e gravado no Banco de dados!
então quando exibido o artigo eu chamo a variável $video com esse código.
Notem que no local que vem o código eu utilizei a variável vídeo com o código ou identificador do vídeo e assim ta beleza, funcionando! o único problema é que algumas URLs ainda fogem desses padrões que estabeleci para que seja substituindo por tem um código que faça isso de forma mais simples? algo semelhante ao WordPress só colocar qualquer URL do YouTube e ele identificar e exibir logo o Player? me ajudem :D
URL NO NAVEGADOR
https://www.youtube.com/watch?v=8h8v7tu9118
CÓDIGO DE INCORPORAÇÃO
<iframe width="560" height="315" src="//www.youtube.com/embed/8h8v7tu9118" frameborder="0" allowfullscreen></iframe>
URL DE INCORPORAÇÃO
//www.youtube.com/embed/8h8v7tu9118
Notem a diferença entre URL's
https://www.youtube.com/watch?v=8h8v7tu9118 //www.youtube.com/embed/8h8v7tu9118
a única parte que tem igual é o identificador do vídeo que e este!
8h8v7tu9118
Ele nunca muda e notando isso e fiz o seguinte código.
$video_original = $_POST['video']; $trata_link = array( 'www.youtube.com/watch?v=' => '', 'www.youtube.com/' => '', 'www.youtube.com' => '', '//' => '', 'embed/' => '', '?feature=player_detailpage' => '', 'feature=player_embedded&v=' => '', 'feature=player_profilepage&v=' => '', 'feature=player_detailpage&v=' => '', 'watch?' => '', 'https://' => '' ); $video = strtr($video_original, $trata_link);
isso está funcionando legal quase sem problemas, e meu código php grava as duas variáveis no meu banco que no final saem como!
Resultado final e gravado no Banco de dados!
$video_original = 'https://www.youtube.com/watch?v=8h8v7tu9118'; $video = '8h8v7tu9118';
então quando exibido o artigo eu chamo a variável $video com esse código.
<iframe src='//www.youtube.com/embed/$video?feature=player_detailpage' class='you' frameborder='0' allowfullscreen></iframe>
Notem que no local que vem o código eu utilizei a variável vídeo com o código ou identificador do vídeo e assim ta beleza, funcionando! o único problema é que algumas URLs ainda fogem desses padrões que estabeleci para que seja substituindo por
''
Cleyton Caetano
Curtidas 0
Respostas
Ronaldo Lanhellas
08/10/2014
Bom, imagino que todas as url's sigam o padrão: 'https://www.youtube.com/watch?v=xxxx' e nesse caso só pegar o valor da variável 'v' e armazenar como id do vídeo para usar com o novo link "embeded".
GOSTEI 0
Cleyton Caetano
08/10/2014
Bom, imagino que todas as url's sigam o padrão: 'https://www.youtube.com/watch?v=xxxx' e nesse caso só pegar o valor da variável 'v' e armazenar como id do vídeo para usar com o novo link "embeded".
mas nem sempre segue esse padrão, olhe..
http://youtu.be/lEfr5nPnB1g
https://www.youtube.com/watch?v=lEfr5nPnB1g&feature=player_detailpage
//www.youtube.com/embed/lEfr5nPnB1g
GOSTEI 0
Fabiano Carvalho
08/10/2014
Veja os padrões que eles tem que acredito que seja apenas esses 3, e faça a validação para pegar somente o ID do video.
Pode tentar utilizando RegExp
Pode tentar utilizando RegExp
GOSTEI 0
Cleyton Caetano
08/10/2014
Veja os padrões que eles tem que acredito que seja apenas esses 3, e faça a validação para pegar somente o ID do video.
Pode tentar utilizando RegExp
Pode tentar utilizando RegExp
Já estou fazendo isso! veja neste exemplo!
$video_original = $_POST['video']; $trata_link = array( 'www.youtube.com/watch?v=' => '', 'www.youtube.com/' => '', 'www.youtube.com' => '', '//' => '', 'embed/' => '', '?feature=player_detailpage' => '', 'feature=player_embedded&v=' => '', 'feature=player_profilepage&v=' => '', 'feature=player_detailpage&v=' => '', 'watch?' => '', 'https://' => '' ); $video = strtr($video_original, $trata_link);
e mesmo retirando todos esses padrões já listados ainda assim me deparo hora ou outra com uma URL fora dos meus padrões!
GOSTEI 0
Fabiano Carvalho
08/10/2014
Então acredito que você terá que acessar o youtube através de cURL e utilizar RegExp para retornar os links independentemente do padrão.
Acredito que será mais "automático" isso, ao invés de informar os padrões que sua aplicação suporta.
Acredito que será mais "automático" isso, ao invés de informar os padrões que sua aplicação suporta.
GOSTEI 0
Ronaldo Lanhellas
08/10/2014
Bom, imagino que todas as url's sigam o padrão: 'https://www.youtube.com/watch?v=xxxx' e nesse caso só pegar o valor da variável 'v' e armazenar como id do vídeo para usar com o novo link "embeded".
mas nem sempre segue esse padrão, olhe..
http://youtu.be/lEfr5nPnB1g
https://www.youtube.com/watch?v=lEfr5nPnB1g&feature=player_detailpage
//www.youtube.com/embed/lEfr5nPnB1g
Regex é uma boa pedida mas se você não sabe quais padrões suportados então regex também não adianta. Enfim, a melhor opção é você ver quais os padrões utilizados e definir casos de tratamento para cada um.
GOSTEI 0
Cleyton Caetano
08/10/2014
Bom, imagino que todas as url's sigam o padrão: 'https://www.youtube.com/watch?v=xxxx' e nesse caso só pegar o valor da variável 'v' e armazenar como id do vídeo para usar com o novo link "embeded".
mas nem sempre segue esse padrão, olhe..
http://youtu.be/lEfr5nPnB1g
https://www.youtube.com/watch?v=lEfr5nPnB1g&feature=player_detailpage
//www.youtube.com/embed/lEfr5nPnB1g
Regex é uma boa pedida mas se você não sabe quais padrões suportados então regex também não adianta. Enfim, a melhor opção é você ver quais os padrões utilizados e definir casos de tratamento para cada um.
Acho que no final de tudo essa vai ser a solução mesmo! :D
GOSTEI 0