Foros del Web » Programando para Internet » PHP »

Funciones de cadenas: hacer los http:// enlaces.

Estas en el tema de Funciones de cadenas: hacer los http:// enlaces. en el foro de PHP en Foros del Web. Me estaba dando una vuelta por el manual online de PHP, buscando la manera de conseguir que todas las palabras que empiecen por http:// se ...
  #1 (permalink)  
Antiguo 26/06/2002, 04:56
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 3 meses
Puntos: 0
Funciones de cadenas: hacer los http:// enlaces.

Me estaba dando una vuelta por el manual online de PHP, buscando la manera de conseguir que todas las palabras que empiecen por http:// se convirtieran en enlaces.

Aparte de flipar con los comentarios y añadidos de la peña (eso si que es dominio de PHP , me encontré con esto:

Código:
 function urls_clickable($string) {
        for($n=0; $n < strlen($string); $n++)
        {
                if(strtolower($string[$n]) == 'h') {
                        if(!strcmp("http://", strtolower($string[$n]) . strtolower($string[$n+1]) . strtolower($string[$n+2]) . strtolower($string[$n+3]) . $string[$n+4] . $string[$n+5] . $string[$n+6])) {
                                $startpos = $n;
                                while($n < strlen($string) && eregi("[a-z0-9\.\:\?\/\~\-\_\&\=\%\+\'\"]", $string[$n])) $n++;
                                if(!eregi("[a-z0-9]", $string[$n-1])) $n--;
                                $link = substr($string, $startpos, ($n-$startpos));
                                $link = $link;
                                $string_tmp = $string;
                                $string = substr($string_tmp, 0, $startpos);
                                $string .= "<a href='".$link."' target='_blank'>".$link."</a>";
                                $string .= substr($string_tmp, $n, strlen($string_tmp));
                                $n = $n + 15;
                        }
                }
        }
        return $string;
}

El caso es que lo he probado pero no entiendo la función del todo, además creo que no funciona, no es que me de error, pero cuando en un texto pongo http:// y lo intento procesar con esta función, el navegador se tira 'Sending Request...' hasta la eternidad.

Gracias por cualquier consejo que podáis darme.


Un saludo,

<hr width=80% align=center>lical -> Usuario registrado de Linux #254225<br><br>¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
  #2 (permalink)  
Antiguo 26/06/2002, 05:19
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Q problema hay con esto ?:
Código:
$variable_nueva = ereg_replace(&quot;http://([^ ]*)&quot;,&quot;&lt;a href=\&quot;\\1\&quot;&gt;\\1&lt;/a&gt;&quot;,$variable);
Vamos, yo creo q es lo que necesitas ;)

Salu2.Ferdy

<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
  #3 (permalink)  
Antiguo 26/06/2002, 05:55
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Sí, vale, es que yo y las expresiones regulares todavía no nos llevamos muy bien

El caso es que tengo que aplicar esto a un párrafo de texto, donde es posible que haya varias URLs. ¿Funcionará igual?



<hr width=80% align=center>lical -> Usuario registrado de Linux #254225<br><br>¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
  #4 (permalink)  
Antiguo 26/06/2002, 06:11
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

En principio si debe funcionar igual.

Lo uso en un log_reader de IRC..

Salu2.Ferdy

<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
  #5 (permalink)  
Antiguo 26/06/2002, 09:23
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 22 años, 4 meses
Puntos: 69
Re: Funciones de cadenas: hacer los http:// enlaces.

Ferdy, que diferencia habría de utilizar [^\s] en vez de [^ ] ??? Me imagino que serán válidas las dos, pero por algo deben estar las dos formas de decirlo.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
  #6 (permalink)  
Antiguo 26/06/2002, 10:24
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Ferdy, una vez más eres mi ídolo

Lo único que no contemplabamos la positibilidad de que nada más escribir la dirección pulsasen un intro (los datos vienen de un form), sería algo así, no?

Código:
 $texto = ereg_replace(&quot;http://([^ \n]*)&quot;,&quot;&lt;a href='http://\\1' target='_blank'&gt;http://\\1&lt;/a&gt;&quot;,$texto);
Y si fueran &lt;br&gt;'s, ¿reemplazaríamos el \n por &quot;&lt;br&gt;&quot; con comillas, verdad?


Un saludo,

<hr width=80% align=center>lical -> Usuario registrado de Linux #254225<br><br>¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
  #7 (permalink)  
Antiguo 26/06/2002, 10:50
 
Fecha de Ingreso: mayo-2001
Mensajes: 58
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

¡ Hola lical !

A quien le interese, en phpbuilder hay un artículo sobre las expresiones regulares (una vez tube un visión global de las mismas pero ahora mismo no recuerdo, así que éste post tb va para mí!).

También citar que las regular expressions sirven igualmente para perl según parece... (corríjanme si me equivoco!)

<a href='ir.asp?http://www.phpbuilder.com/columns/dario19990616.php3' target='_blank'>http://www.phpbuilder.com/columns/dario1...</a>

Un saludo,
Edulix
  #8 (permalink)  
Antiguo 28/06/2002, 06:01
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Webstudio, en principio valdrían las dos, solo que yo siempre había usado eso, y la costumbre, es la costumbre ;)

lical, no entiendo muy bien lo que preguntas sobre &lt;br&gt;'s y \n's....

Edulix, si, algunas de las Reg_EXP que se pueden usar en PHP son compatibles con las de Perl

Salu2.Ferdy

<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
  #9 (permalink)  
Antiguo 28/06/2002, 06:06
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Sí, bueno, lo que yo quería decir es que se tendría en cuenta todo lo que empiece por http:// y todo lo que le siga hasta llegar a un espacio. Pero si inmediatamente después de la URL hubiese un intro (bien \n o bien un &lt;br&gt;), mi pregunta era que si la expresión se modificaría como he puesto arriba o no.

Quiero decir, si no la modificamos, el enlace tomaría toda la expresión http:// más la primera palabra de la línea siguiente si nada más terminar la URL hay un intro.


Un saludo,

<hr width=80% align=center>lical -> Usuario registrado de Linux #254225<br><br>¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
  #10 (permalink)  
Antiguo 28/06/2002, 07:26
Avatar de Ferdy
Colaborador
 
Fecha de Ingreso: junio-2001
Ubicación: España
Mensajes: 1.430
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Aja...

pues veamos, tanto si hay un &lt;br&gt; como si hay un \n, luego tendrás qur convertirlos todos a &lt;br&gt; no ? (para mostrarlos) pues
Código:
&lt;?php

$variable = &quot;&quot;; # lo que sea
$variable = str_replace(&quot;&lt;br&gt;&quot;,'\n',$variable);
$variable = ereg_replace(&quot;http://([^ \n]*)&quot;,&quot;&lt;a href=\&quot;\\1\&quot;&gt;\\1&lt;/a&gt;&quot;,$variable);
$variable = nl2br($variable);

?&gt;
Yo lo haría así. No se, prueba y nos dices ;)

Salu2.Ferdy

<hr />Usuario registrado de Linux #241564
<a href="http://www.ferdyx.org">FerdyX.org</a> - Web Open Source
  #11 (permalink)  
Antiguo 28/06/2002, 08:42
Avatar de lical
Colaborador
 
Fecha de Ingreso: diciembre-2001
Ubicación: $PWD
Mensajes: 1.267
Antigüedad: 22 años, 3 meses
Puntos: 0
Re: Funciones de cadenas: hacer los http:// enlaces.

Sí, al final hice algo parecido.

Un saludo,

<hr width=80% align=center>lical -> Usuario registrado de Linux #254225<br><br>¿Piensas que el software puede ser algo más?
[B]<a href="http://www.zonasiete.org/" target="_blank">www.zonasiete.org</a>
Acercando el proyecto GNU/Linux a todos.</b
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 06:22.