Foros del Web » Programando para Internet » PHP »

Convertir automaticamente urls

Estas en el tema de Convertir automaticamente urls en el foro de PHP en Foros del Web. Quisiera saber como convertir urls tipeadso en un texbox a links activos como lo hace este foro ejemplo.. www.hola.com se convierte en .... <a href ...
  #1 (permalink)  
Antiguo 11/05/2003, 01:25
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
Pregunta Convertir automaticamente urls

Quisiera saber como convertir urls tipeadso en un texbox a links activos como lo hace este foro ejemplo..

www.hola.com se convierte en ....
<a href = "www.hola.com">www.hola.com</a>

y todas las apariciones diferentes yo trate de leer el codigo fuente fuente de los foros dpero es muy complejo alguien que me pueda ayudar???
__________________
Siempre hay algo nuevo que aprender
  #2 (permalink)  
Antiguo 11/05/2003, 04:13
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola, es con un ereg:

Código PHP:
$mensaje ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]""<a href=\"\\0\">\\0</a>"$mensaje); 
yo la cogi de www.hackingballz.com, y funciona a la perfección

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #3 (permalink)  
Antiguo 11/05/2003, 13:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Más que con un "ereg" .. con "expresiones regulares" ...(sí .. con ereg() y demas funciones ... ejecutas expresiones regulares en PHP ...)

Bueno, si les interesa vera algo más sobre el "apasionante" mundo de las Exp. regulares:

http://www.ignside.net/man/php/regex.php

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 12/05/2003, 01:41
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
De acuerdo GRacias

Gracias a los dos esta preguntame estaba dando bueltas desde hace rato ahora ya queada clara.. se sacan un 10 chao

Bien gracias por la respuesta pero me gustaria que me Pino si pudiera o cualquiera que sepa me explicara el uso del filtro usado por pino para los url ya que me lei el manualq que dijo cluster pero no viene para nada parecido a lo que hizo pino, o al menos alguien que me diga el uso de ereg_replace, ya que el uso /0 como "variable" para colocar el string
Código PHP:
$mensaje ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]""<a href=\"\0\  --> variable ">0</a>", $mensaje); 
ayuda si o al menos que ponga el codigo completo para poder ver mejor las cosas
__________________
Siempre hay algo nuevo que aprender

Última edición por HIa; 12/05/2003 a las 01:41
  #5 (permalink)  
Antiguo 12/05/2003, 02:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El \0 y cosas así .. en expresiones regulares significa que se va a sustituir esa "variable" por el bloque que se ha definido nº tal

Los bloques se definen entre () (parentesis) .. si no hay .. el \0 sería la expresión entera .. como es el caso. Pero si hubiera más ahi podrías "jugar" con el orden de los bloques via \0 \1 ..etc según orden de creación

En el manual de PHP oficial .. más o menos lo explica así (o eso es lo que entedí en su momento ..) .. Revisalo y nos cuetas xDD:

http://www.php.net/manual/es/function.ereg-replace.php

Y .. bueno, .. el ejemplo que puso Pino es el que dá como ejemplo de uso el manual de php sobre ereg_replace() .. jeje.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 12/05/2003, 06:13
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
Je je buscando se encuentra

Como dicen aqui en mi pais me quede picado asi que fui a la biblioteca mas cercana a mi casa ( el mouse + modem +pc )
y me puse a buscar sobre expresiones regulares y su uso encontre varias soluciones e aqui una bastante interesante.. para lo de los links
Código PHP:
<?
function mi_link($cadena) {

/*
cambia una direccion tipo http, o www, o lo que quierqas a link activo  :policia: */

$tablo=split(" ",$cadena);

for (
$i=0;$i<count($tablo);$i++){
   if (
strpos(" ".$tablo[$i],"http://")==||
       
strpos(" ".$tablo[$i],"ftp://")==1  ||
       
strpos(" ".$tablo[$i],"www.")==1   //aqui hassta los links de endokey se pueden activar .... :corazon: 
   
{
        print 
" <A href='" $tablo[$i] . "'>";
        print 
nl2br($tablo[$i]);
        print 
"</a>";
   }
   else
        print 
" " nl2br($tablo[$i]);
}   

}

?>
despues le pasa un valor de un text box a la funcion y listo problema resuleto sin uso de expresiones regulares, por cierto cluster en el manual que me mandaste no venia nada hacerca de estas expresiones..


[:alpha:]
[:space:]
[:alnum:]
que son las que me tiene en duda ahora

he aqui otro ejemplo usando ahoira si expresiones regulares

Código PHP:
<?php

// urls automatique
$texte eregi_replace('([[:space:]]|^)(www)''\\1http://\\2'$texte);    
$prefix '(http|https|ftp|telnet|news|gopher|file|wais)://';   
$pureUrl '([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)'

$texte eregi_replace($prefix.$pureUrl
            
'<a href="\\1://\\2" target="_blank">\\1://\\2</a>'$texte);

?>
que les parece se psuede usar de igual manera para convertir mails yndemas pyues me ha encantado

chao, al que busca Dios lo ayuda
__________________
Siempre hay algo nuevo que aprender
  #7 (permalink)  
Antiguo 12/05/2003, 08:08
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola, aquí tienes lo que son:

alnum: "[[:alnum:]]" concuerda con cualquier cadena que contenga caracteres alfanuméricos.
digit: "[[:digit:]]" cualquier cadena que contenga caracteres numéricos.
space: "[[:space:]]" cualquier cadena que contenga espacios.
alpha: "[[:alpha:]]" cualquier cadena que contenga caracteres alfabéticos.

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #8 (permalink)  
Antiguo 12/05/2003, 20:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
HIa

Las expresiones regulares no son própias de PHP como ya he comentado alguna vez .. Si buscas por "expresiones regulares en perl" veras que encuentras más información al respecto.

La función que usas mi_link() es muy "primitiva" .. osese, el algoritmo que usas solo miras que una "palabra" (se entiende por palabra a algo que esté separado por espacios) empiece por http:// .. o las otras cadenas que has puesto .. Pero, no valida una sintax real de un URL completo.

El caso, que para implementar el resto de condiciones que validen a un URL deberías emplear muchhhhaaaa mas lógica .. cosa que con Expresiones regulares ya estaras viendo como en una sóla línea abarcas un buen número de condiciones ...


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 12/05/2003, 23:52
Avatar de HIa
HIa
 
Fecha de Ingreso: noviembre-2002
Ubicación: Cartago
Mensajes: 121
Antigüedad: 15 años
Puntos: 0
De acuerdo Gracias otra vez

Ahora si ya he comprendido el uso de las expresiones regulares me he conseguido otros tutoriales para rellenar gracias a los dos
__________________
Siempre hay algo nuevo que aprender
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:54.