Array
(
)

Código complexo YouTube!

PHP
Cleyton Caetano
   - 08 out 2014

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ódigohttps://www.youtube.com/watch?v=8h8v7tu9118
CÓDIGO DE INCORPORAÇÃO
#Código<iframe width="560" height="315" src="//www.youtube.com/embed/8h8v7tu9118" frameborder="0" allowfullscreen></iframe>
URL DE INCORPORAÇÃO
#Código//www.youtube.com/embed/8h8v7tu9118
Notem a diferença entre URL's
#Códigohttps://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!
#Código8h8v7tu9118
Ele nunca muda e notando isso e fiz o seguinte código.
#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!
#Código
$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.
#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 #Código'' 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

Ronaldo Lanhellas
   - 08 out 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".

Cleyton Caetano
   - 10 out 2014


Citação:
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..

#Códigohttp://youtu.be/lEfr5nPnB1g
#Códigohttps://www.youtube.com/watch?v=lEfr5nPnB1g&feature=player_detailpage
#Código//www.youtube.com/embed/lEfr5nPnB1g

Faabiianooc
   - 10 out 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

Cleyton Caetano
   - 10 out 2014


Citação:
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


Já estou fazendo isso! veja neste exemplo!

#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);


e mesmo retirando todos esses padrões já listados ainda assim me deparo hora ou outra com uma URL fora dos meus padrões!

Faabiianooc
   - 10 out 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.

Ronaldo Lanhellas
   - 11 out 2014


Citação:

Citação:
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..

#Códigohttp://youtu.be/lEfr5nPnB1g
#Códigohttps://www.youtube.com/watch?v=lEfr5nPnB1g&feature=player_detailpage
#Código//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.

Cleyton Caetano
   - 12 out 2014


Citação:

Citação:

Citação:
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..

#Códigohttp://youtu.be/lEfr5nPnB1g
#Códigohttps://www.youtube.com/watch?v=lEfr5nPnB1g&feature=player_detailpage
#Código//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