Eu tenho um campo de texto onde os usuários podem escrever qualquer coisa.
Por exemplo:
Lorem Ipsum é simplesmente um texto fictício. http://www.youtube.com/watch?v=DUQi_R4SgWo da indústria de impressão e composição. Lorem Ipsum tem sido o texto fictício padrão da indústria desde 1500, quando um impressor desconhecido pegou um modelo de impressão e o embaralhou para fazer um livro de amostra de tipos. Ele sobreviveu não apenas cinco séculos, mas também ao salto para a composição eletrônica, permanecendo essencialmente inalterado. http://www.youtube.com/watch?v=A_6gNZCkajU&feature=relmfu Foi popularizado na década de 1960 com o lançamento de folhas de Letraset contendo passagens de Lorem Ipsum e, mais recentemente, com software de editoração eletrônica como Aldus PageMaker incluindo versões de Lorem Ipsum.
Agora eu gostaria de analisá-lo e encontrar todos os URLs de vídeo do YouTube e seus ids.
Alguma ideia de como isso funciona?
Respostas:
Um URL de vídeo do YouTube pode ser encontrado em vários formatos:
http://youtu.be/NLqAF9hrVbY
http://www.youtube.com/embed/NLqAF9hrVbY
https://www.youtube.com/embed/NLqAF9hrVbY
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US
http://www.youtube.com/watch?v=NLqAF9hrVbY
http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo
http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I
http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/2/PPS-8DMrAn4
http://gdata.youtube.com/feeds/api/videos/NLqAF9hrVbY
http://www.youtube.com/watch?v=spDj54kf-vY&feature=g-vrec
http://www.youtube.com/watch?v=spDj54kf-vY&feature=youtu.be
http://www.youtube-nocookie.com
Aqui está uma função PHP com uma regex comentada que corresponde a cada um desses formulários de URL e os converte em links (se ainda não forem links):
; // Fim de $ YouTubeId.
E aqui está uma versão JavaScript com exatamente a mesma regex (com comentários removidos):
Notas:
$1
."http://www.youtube.com/watch?v=VIDEO_ID"
URL estilo e define o texto link:"YouTube link: VIDEO_ID"
.Editar 05-07-2011:
-
Hífen adicionado à classe ID charEditar 2011-07-17: Corrigido regex para consumir qualquer parte restante (por exemplo, consulta ) de URL após o ID do YouTube. Adicionado modificador
'i'
ignore-case . Função renomeada para camelCase. Teste antecipado pré-vinculado aprimorado.Editar 27/07/2011: Novos formatos de "usuário" e "ytscreeningroom" adicionados aos URLs do YouTube.
Editar 02-08-2011: simplificado / generalizado para lidar com novos URLs "qualquer / coisa / vai" do YouTube.
Editar 25/08/2011: Várias modificações:
linkifyYouTubeURLs()
function.\b
palavra âncora de limite em torno do VIDEO_ID. No entanto, isso não funcionará se o VIDEO_ID começar ou terminar com um-
travessão. Corrigido para lidar com essa condição.+
e%
à classe de caracteres correspondente à string de consulta.%
um:~
.Editar 12/10/2011: a parte do host do URL do YouTube agora pode ter qualquer subdomínio (não apenas
www.
).Editar 01-05-2012: A seção consumir URL agora pode permitir '-'.
Editar 2013-08-23: Adicionado formato adicional fornecido por @Mei. (A parte da consulta pode ter um
.
ponto.Editar 2013/11/30: Adicionado formato adicional fornecida pelo @CRONUS:
youtube-nocookie.com
.Editar 25/01/2016: Regex corrigido para lidar com casos de erro fornecidos pelo CRONUS.
fonte
Aqui está um método que escrevi uma vez para um projeto que extrai as chaves de vídeo do YouTube e Vimeo:
fonte
if(strpos($vid_link, 'youtu'))
irá capturar o url curtoyoutu.be
, além do url comum.Embora a resposta de ridgerunner seja a base para minha resposta, ele NÃO resolve para todos os urls e não acredito que seja capaz disso, devido a várias correspondências possíveis de
VIDEO_ID
em um URL do YouTube. Minha regex inclui sua abordagem agressiva como último recurso, mas tenta primeiro todas as correspondências comuns, reduzindo muito a possibilidade de uma correspondência errada posteriormente na URL.Este regex:
Lida com todos os casos originalmente referenciados nos exemplos de ridgerunners, mais qualquer url que possa ter uma sequência de 11 caracteres posteriormente no url. ie:
http://www.youtube.com/watch?v=GUEZCxBcM78&feature=pyv&feature=pyv&ad=10059374899&kw=%2Bwingsuit
Aqui está um exemplo de trabalho que testa todos os URLs de amostra do YouTube:
http://jsfiddle.net/DJSwc/5/
fonte
Experimentar
Você encontrará os IDs de vídeo no primeiro grupo de captura. O que não sei é o que é um ID de vídeo válido. No momento, eu verifico
v=
e capturo tudo-A-Za-z0-9_
.Eu verifiquei online aqui no rubular com sua string de amostra.
fonte
Usar:
fonte
Ok, fiz uma função própria. Mas acredito que seja bastante ineficiente. Quaisquer melhorias são bem-vindas:
fonte
Tentei uma expressão simples para obter apenas o videoid:
Verifique trabalhando online aqui em phpliveregex .
fonte
O autor da postagem original perguntou "Gostaria de analisar e encontrar todos os URLs de vídeo do YouTube e seus ids." Troquei a resposta mais popular acima para preg_match e retornei o ID do vídeo e o URL.
Obtenha o URL e o ID do YouTube na postagem:
fonte
Encontre um link do YouTube facilmente em uma string:
fonte
Este código em java funciona perfeitamente bem para todos os urls do youtube no momento.
fonte