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ódigo

https://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ódigo
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!
#Código
8h8v7tu9118

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ódigo

http://youtu.be/lEfr5nPnB1g

#Código
https://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ódigo

http://youtu.be/lEfr5nPnB1g

#Código
https://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ódigo

http://youtu.be/lEfr5nPnB1g

#Código
https://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