Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/02/2013, 19:40
edward18_1
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 8 meses
Puntos: 18
Problema con expresiones regulares

Hola, tengo una funcion que me convierte el texto ingresado dependiendo a link o una imagen o el reproductor de youtube! hasta los momentos estoy probando con el reproductor de youtube y cuando ingreso el link del video! como bien saben! al final aparece el id del video de youtube! entonces cuando deberia de ponerme el reproductor con el video! coloca el reproductor pero no el video, examinando me doy cuenta que hay un problema con el ID del video cuando la funcion procesa el texto ya que no toma el ID completo por ejemplo si el id del video es "dfdsfsdf12" entonces la funcion toma es "dfdsfsdf1" y no muestra el video, claro porque no es el ID correspondiente!
Adjunto la funcion que utilizo para que alguien me ayude por favor! gracias :D

Código PHP:
Ver original
  1. function texto_a_url($text) {
  2.     $ret = ' ' . $text;
  3.     $patrones = array('@http://www\.youtube.*(v=|\/v\/)([^&\/]*).*?[^\s]+@i',
  4.     '#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?\.(png|jpg|jpeg))#i',
  5.     '#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i');
  6.     $reemplazos = array(
  7.    '<div class="videos" id="'.rand().'"><iframe width="560" height="315" src="http://www.youtube.com/embed/$2" frameborder="0" allowfullscreen></iframe></div>',
  8.     '\1 <div class="imagenes_links" imagen="\2://\3" ><img src="\2://\3" id="la_imagen_todo"/></div>', '\1<a href="\2://\3" target="_blank">\2://\3</a>');
  9.     $ret = preg_replace($patrones, $reemplazos, $ret);
  10.    
  11.     $ret = preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i",
  12.     '\1<a href="http://\2.\3" target="_blank">\2.\3</a>', $ret);
  13.    
  14.     $ret = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i",
  15.     "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>", $ret);
  16.    
  17.     $ret = substr($ret, 1);
  18.    
  19.     return ($ret);
  20. }