Foros del Web » Programando para Internet » PHP »

Otra duda

Estas en el tema de Otra duda en el foro de PHP en Foros del Web. Tengo esta función para parsear texto y si tiene URL sustituirlo por el vinculo: Código PHP:   function  parseurl ( $str ) {   $str  =  ...
  #1 (permalink)  
Antiguo 15/03/2004, 15:44
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Otra duda

Tengo esta función para parsear texto y si tiene URL sustituirlo por el vinculo:
Código PHP:
 function parseurl($str) {
 
$str eregi_replace('(((f|ht){1}(tp|tps){1}://)[-a-zA-Z0-9@:%_+.~#?&//=]+)''<a href="\1" target="_blank">\1</a>'$str);
 
$str eregi_replace('([[:space:]()[{}])([url]www.[/url][-a-zA-Z0-9@:%_+.~#?&//=]+)''\1<a href="http://\2" target="_blank">\2</a>'$str);
 
$str eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})','<a href=\"mailto:\1\">\1</a>'$str);
 return 
$str;

pero si mi direccion es de esta manera no funciona:

http://intranet.uci.cu/cgi_bin/not.pl?1-17562|El%20Juramento%20de%20Baraguá%20|1-17562.jpg|15/03/2004|16776|noticia

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 15/03/2004, 16:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No funciona ni la expresión regular que usan estos foros .. ¬¬

Tendrías que entrar a modificar la exp. reg. ..(y eso no es mi fuerte .. así que esperaremos alguien que te heche una mano con la modificación a realizar de esa exp.reg).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 15/03/2004, 18:01
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
No estoy muy ducho en expresiones regulares, pero un dia navegando encontre esta funcion que creo sale de un motor de templates, no se exactamente de cual, si alguien lo sabe todos agradeceriamos que puesiera los creditos,

bueno a lo que hibamos, realmente me parecio muy interesante, y funciona a las mil maravillas, solo tiene un pequño defecto que necesita como minimo un espacio delante del URL a parserar, como solo la utilizo en contadas ocasiones pues no me puse a solucionar el tema pues es un defecto minimo y sabiendolo se pone y santas pascuas.

la funcion es esta
Código PHP:
 function busca_url($_valor=''){

        
$pattern[0] = "#([\n ])([a-z]*)://([^, \n\r]+)#i"
        
$replacement[0] = "\\1<a href=\"\\2://\\3\" target=\"_blank\">\\2://\\3</a>"
        
$pattern[1] = "#([\n ])www\.([a-z0-9\-]+)\.([a-z0-9\-.\~]+)((?:/[^, \n\r]*)?)#i"
        
$replacement[1] = "\\1<a href=\"http://www.\\2.\\3\\4\" target=\"_blank\">[url]www.\\2.\\3\\4[/url]</a>"
        
$pattern[2] = "#([\n ])([a-z0-9\-_.]+?)@([^, \n\r]+)#i"
        
$replacement[2] = "\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"
        
$_remplazado preg_replace($pattern,$replacement,$_valor);
        return 
$_remplazado;
        

La he probado con el URL que nos das y va bien, solo eso si la pruebas solo con este URL ponle un espacio delante.

Espero que te sirva
Un saludo
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:29.