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<?php
$str_return = preg_replace("/((http:\/\/|https:\/\/)[^\s]+)/i", '<a target="_blank" rel="nofollow" href="$1">$0</a>', $str_return); ?>
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<?php
$pattern = '#https?://(?:www\.)?youtube\.com/watch\?v=([0-9a-z-A-Z-]+)#i';
$replacement = '<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/$1?rel=0" frameborder="0" allowfullscreen></iframe>';
$str_return = preg_replace($pattern, $replacement, $str_return, 1); ?>
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.