Tengo un campo de texto donde los usuarios pueden escribir cualquier cosa.
Por ejemplo:
Lorem Ipsum es simplemente texto ficticio. http://www.youtube.com/watch?v=DUQi_R4SgWo de la industria de la impresión y la composición tipográfica. Lorem Ipsum ha sido el texto de relleno estándar de la industria desde la década de 1500, cuando un impresor desconocido tomó una galera de tipos y la mezcló para hacer un libro de muestras tipo. Ha sobrevivido no solo a cinco siglos, sino también al salto a la composición tipográfica electrónica, permaneciendo esencialmente sin cambios. http://www.youtube.com/watch?v=A_6gNZCkajU&feature=relmfu Se popularizó en la década de 1960 con el lanzamiento de hojas de Letraset que contenían pasajes de Lorem Ipsum y, más recientemente, con software de autoedición como Aldus PageMaker que incluía versiones de Lorem Ipsum.
Ahora me gustaría analizarlo y encontrar todas las URL de los videos de YouTube y sus identificadores.
¿Alguna idea de cómo funciona?
Respuestas:
La URL de un video de YouTube se puede encontrar en una variedad de 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
Aquí hay una función PHP con una expresión regular comentada que coincide con cada uno de estos formularios de URL y los convierte en enlaces (si aún no son enlaces):
; // Fin de $ YouTubeId.
Y aquí hay una versión de JavaScript con la misma expresión regular (sin comentarios):
Notas:
$1
."http://www.youtube.com/watch?v=VIDEO_ID"
URL estilo y establece el texto del enlace a:"YouTube link: VIDEO_ID"
.Editar 2011-07-05: Se agregó un
-
guión a la clase de identificación de caracteresEditar 2011-07-17: Se corrigió la expresión regular para consumir cualquier parte restante (por ejemplo, consulta ) de la URL después de la ID de YouTube. Se agregó
'i'
un modificador de ignorar mayúsculas y minúsculas . Función renombrada a camelCase. Prueba de anticipación predefinida mejorada.Editar 2011-07-27: Se agregaron nuevos formatos de "usuario" y "ytscreeningroom" de las URL de YouTube.
Editar 2011-08-02: simplificado / generalizado para manejar las nuevas URL de YouTube de "cualquier cosa o cosa".
Editar 2011-08-25: Varias modificaciones:
linkifyYouTubeURLs()
function.\b
palabra anclaje de límite alrededor de VIDEO_ID. Sin embargo, esto no funcionará si VIDEO_ID comienza o termina con un-
guión. Se corrigió para que maneje esta condición.+
y%
a la cadena de consulta coincidente de clase de carácter.%
a:~
.Editar 2011-10-12: La parte del host de la URL de YouTube ahora puede tener cualquier subdominio (no solo
www.
).Editar 2012-05-01: La sección de URL de consumo ahora puede permitir '-'.
Editar 2013-08-23: formato adicional proporcionado por @Mei. (La parte de la consulta puede tener un
.
punto.Editar 11/30/2013: Añadido formato adicional proporcionada por @CRONUS:
youtube-nocookie.com
.Editar 2016-01-25: expresión regular fija para manejar el caso de error proporcionado por CRONUS.
fuente
Aquí hay un método que escribí una vez para un proyecto que extrae claves de video de YouTube y Vimeo:
fuente
if(strpos($vid_link, 'youtu'))
capturará la URL cortayoutu.be
además de la URL común.Si bien la respuesta de ridgerunner es la base de mi respuesta, la suya NO resuelve todas las URL y no creo que sea capaz de hacerlo, debido a las múltiples coincidencias posibles
VIDEO_ID
en una URL de YouTube. Mi expresión regular incluye su enfoque agresivo como último recurso, pero primero intenta todas las coincidencias comunes, lo que reduce enormemente la posibilidad de una coincidencia incorrecta más adelante en la URL.Esta expresión regular:
Maneja todos los casos a los que se hace referencia originalmente en los ejemplos de ridgerunners, además de cualquier URL que pueda tener una secuencia de 11 caracteres más adelante en la URL. es decir:
http://www.youtube.com/watch?v=GUEZCxBcM78&feature=pyv&feature=pyv&ad=10059374899&kw=%2Bwingsuit
Aquí hay una muestra funcional que prueba todas las URL de muestra de YouTube:
http://jsfiddle.net/DJSwc/5/
fuente
Tratar
Encontrará las ID de video en el primer grupo de captura. Lo que no sé es qué es una identificación de video válida. Por el momento, busco
v=
y capturo todo-A-Za-z0-9_
.Lo verifiqué en línea aquí en rubular con su cadena de muestra.
fuente
Utilizar:
fuente
De acuerdo, hice una función propia. Pero creo que es bastante ineficiente. Cualquier mejora es bienvenida:
fuente
Probé una expresión simple para obtener solo el videoid:
Compruébelo trabajando en línea aquí en phpliveregex .
fuente
El cartel original preguntaba "Me gustaría analizarlo y encontrar todas las URL de los videos de YouTube y sus identificadores". Cambié la respuesta más popular anterior a preg_match y devolví la identificación del video y la URL.
Obtenga la URL y el ID de YouTube de la publicación:
fuente
Encuentre un enlace de YouTube fácilmente desde una cadena:
fuente
Este código en Java funciona absolutamente bien para todas las URL de YouTube en la actualidad.
fuente