Foros del Web » Programando para Internet » PHP »

Expreciones regulares php - ignorar tags

Estas en el tema de Expreciones regulares php - ignorar tags en el foro de PHP en Foros del Web. Hola a todos, soy nuevito y espero esta en el lugar correcto posteando mi duda. el tema es el siguiente, yo recibo un párrafo con ...
  #1 (permalink)  
Antiguo 02/02/2010, 08:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Expreciones regulares php - ignorar tags

Hola a todos, soy nuevito y espero esta en el lugar correcto posteando mi duda.

el tema es el siguiente, yo recibo un párrafo con texto enriquecido, que me pueden mandar un link completo (<a>link</a>) y por otro lado utilizo una expresión regular para que me busque url y las transforme en link, a qui esta el tema, es obvio que que dentro del tag a encuentre una url y por ende me la trasforma en link.

Ahora como puedo modifica mi expresión para que no realice la modificación dentro del tag.

expresión:

/((\s+(http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.(([a-zA-Z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jo bs|mil|mobi|museum|name|net|org|pro|tel|travel)(\.[a-z]{2,2})?))\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is

Muchas Gracias a todos.
  #2 (permalink)  
Antiguo 02/02/2010, 08:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expreciones regulares php - ignorar tags

revisa el siguiente tema
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

en si debes hacer búsquedas hacía la izquierda o derecha para evitar que se halle la URL dentro de comillas, o bien, dentro del tag... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/02/2010, 08:41
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Expreciones regulares php - ignorar tags

HUUU eso fue rápido, Gracias por el dato, lo voy a ver.
  #4 (permalink)  
Antiguo 02/02/2010, 13:57
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Expreciones regulares php - ignorar tags

Bueno, intente algunas cosas y se me ocurrió de que si le agrego ?<!\" deveria andar, pero me tira error el "<". Alguna sugerencia??
  #5 (permalink)  
Antiguo 02/02/2010, 14:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expreciones regulares php - ignorar tags

Cita:
Iniciado por klarc Ver Mensaje
Bueno, intente algunas cosas y se me ocurrió de que si le agrego ?<!\" deveria andar, pero me tira error el "<". Alguna sugerencia??
si esperas a que adivinemos el mensaje de error que te tira... que tipo de sugerencia esperas?? .pensando:

por favor, muestra la expresión como la tienes y como la aplicas... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 02/02/2010, 14:18
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Expreciones regulares php - ignorar tags

Bueno, no pude reproducir el error, es probable que puse algo mal yo, y también perdón por no dar mas dato, es que tengo la cabeza quemada.
Código PHP:
Ver original
  1. function UrlParser($texto)
  2.     {
  3.             $patron = "/(?<!\")((\s+(http[s]?:\/\/)|(www\.))?(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.(([a-zA-Z]{2}|aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel)(\.[a-z]{2,2})?))\/?[a-z0-9._\/~#&=;%+?-]+[a-z0-9\/#=?]{1,1})/is";
  4.            
  5.                 $str = uniqid('');
  6.                 $i=0;
  7.                 $codes = array();
  8.                 while (preg_match($patron, $texto, $matches) ) {
  9.                
  10.                     $i++;
  11.                     $link=  isset($matches[0])?$matches[0]:'';
  12.                      if(strrpos($link,'http://')=== false) $link= 'http://'. $link;
  13.                      $short_link = (strlen($link)>35)?self::tinyUrl($link):$link;
  14.                      $codes[$i]['link'] = ' <a rel="external nofollow" title="'.$link.'" href="'.$short_link.'">'.$short_link.'</a> ';     
  15.                     $texto = preg_replace($patron , $str.$i, $texto, 1);
  16.                 }  
  17.                 $i=0;
  18.                 while (preg_match("#".$str."([0-9]+)#", $texto, $matches))
  19.                 {
  20.                     $i++;    
  21.                     $texto = preg_replace("#".$str."([0-9]+)#", $codes[$i]['link'] , $texto, 1);
  22.                 }
  23.              return $texto;
  24.      }

gracias por la ayuda.
  #7 (permalink)  
Antiguo 02/02/2010, 14:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expreciones regulares php - ignorar tags

bien, entonces ahora el código sigue sin funcionar... o que paso??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 02/02/2010, 14:36
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Expreciones regulares php - ignorar tags

Sip, el código sigue sin funcionar, es decir, si yo tengo un tag <a> me lo transforma a link la url que tiene por mas que yo le ponga que no lo parce si tiene un comillas adelante, se entiende?
  #9 (permalink)  
Antiguo 02/02/2010, 14:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Expreciones regulares php - ignorar tags

pues, de hecho la expresión se ve correcta... tal ves sea que dichos enlaces no usan comillas dobles??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 02/02/2010, 15:01
 
Fecha de Ingreso: febrero-2010
Mensajes: 6
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Expreciones regulares php - ignorar tags

Bueno, confirmado que la expresión esta bien y que los enlaces tiene comillas dobles, voy a ver que otros elemento pueden afectar el resultado.
La verdad que que poste esto porque no tengo mucha idea de expresiones regulares y me han dado una mano increíble, si encuentro el error lo comento por si le pasa a otro.

muchas gracias!!
si alguno tiene alguna idea me la comenta que la veo.

Etiquetas: ignorar, regulares, tags
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 07:38.