Foros del Web » Programando para Internet » PHP »

Problema con expresiones regulares

Estas en el tema de Problema con expresiones regulares en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 23/02/2013, 19:40
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 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. }
  #2 (permalink)  
Antiguo 23/02/2013, 20:16
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con expresiones regulares

Primero yo simplificaría el problema...Casi todas las expresiones regulares (por no decir todas, según cómo describes qué es lo que hace esa funcion) que hay en esa función, son innecesarias.
  #3 (permalink)  
Antiguo 23/02/2013, 20:18
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Problema con expresiones regulares

Cita:
Iniciado por dashtrash Ver Mensaje
Primero yo simplificaría el problema...Casi todas las expresiones regulares (por no decir todas, según cómo describes qué es lo que hace esa funcion) que hay en esa función, son innecesarias.
Claro, lo que pasa es que eso es un codigo viejo que tenia guardado! y ahora que lo necesito es que lo voy a usar! pero Youtube cambio su formato de mostrar los videos en otras web! anteriormente era con un codigo mas largo! y tenia que mostrar una de tantas imagenes del video de youtube, ahora su codigo es mas simplificado! el problema a mi parecer radica en esta linea

Código PHP:
Ver original
  1. $patrones = array('@http://www\.youtube.*(v=|\/v\/)([^&\/]*).*?[^\s]+@i',
  #4 (permalink)  
Antiguo 23/02/2013, 20:23
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: Problema con expresiones regulares

Qué se supone que es la entrada que recibe esa funcion?
Es decir, puedes poner un ejemplo ?
  #5 (permalink)  
Antiguo 23/02/2013, 20:33
 
Fecha de Ingreso: septiembre-2011
Mensajes: 480
Antigüedad: 12 años, 7 meses
Puntos: 18
Respuesta: Problema con expresiones regulares

Claro que si :D

Código PHP:
Ver original
  1. echo texto_a_url("Este es un video de youtube, una imagen y un link
  2. http://www.youtube.com/watch?v=9bZkp7q19f0
  3. http://www.forosdelweb.com/f18/problema-con-expresiones-regulares-1038955
  4. http://3.bp.blogspot.com/-M__xrNR4k6o/UDjEBMLSoRI/AAAAAAAAA14/3GyNvoKdNWU/s1600/cielo-3.jpg
  5. http://www.forosdelweb.com/f18/problema-con-expresiones-regulares-1038955
  6. ");

Etiquetas: expresiones, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:36.