Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/12/2015, 14:23
DandyCC
 
Fecha de Ingreso: junio-2012
Mensajes: 147
Antigüedad: 11 años, 10 meses
Puntos: 1
RegExp para vídeos de youtube y links en general

Hola. Estoy modificando una web en la que los usuarios dejan comentarios, como un foro. Los usuarios pueden poner enlaces de cualquier página web y mediante una expresión regular y preg_replace de php se muestran como links:

Código PHP:
Ver original
  1. <?php
  2.     $str_return = preg_replace("/((http:\/\/|https:\/\/)[^\s]+)/i", '<a target="_blank" rel="nofollow" href="$1">$0</a>', $str_return);
  3. ?>

Lo que me han pedido es que los enlaces que sean de youtube se muestren como vídeo embebido. Después de buscar un rato he encontrado esta expresión regular:

Código PHP:
Ver original
  1. <?php
  2.     $pattern = '#https?://(?:www\.)?youtube\.com/watch\?v=([0-9a-z-A-Z-]+)#i';
  3.     $replacement = '<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/$1?rel=0" frameborder="0" allowfullscreen></iframe>';     
  4.     $str_return = preg_replace($pattern, $replacement, $str_return, 1);
  5. ?>

Pero tengo un problema bastante obvio, cuando se encuentra un link a youtube encaja en las dos expresiones regulares y el src del iframe se modifica, por lo que deja de ser funcional. No sé exactamente como modificar una de las dos expresiones regulares para que los links a cualquier página web entren en la primera expresión regular, menos los de youtube, que deben entrar en la segunda.

Alguna idea? Gracias.