Foros del Web » Programando para Internet » PHP »

Pasar (a)txt(/a) a enlace como aquí

Estas en el tema de Pasar (a)txt(/a) a enlace como aquí en el foro de PHP en Foros del Web. Necesito hacer lo mismo que en estos foros, que cuando pones (a)http://www.enlace.com(/a) se convierta en enlace y con un nº de caracteres determinado. El texto ...
  #1 (permalink)  
Antiguo 31/08/2002, 05:37
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Pasar (a)txt(/a) a enlace como aquí

Necesito hacer lo mismo que en estos foros, que cuando pones (a)http://www.enlace.com(/a) se convierta en enlace y con un nº de caracteres determinado. El texto está guardado en una BD que es leida y necesito una función que me convierta el texto en enlace.

<hr>
Saludos de Ferny desde <img src="http://www.forosdelweb.com/banderas/espana.gif" align=middle>
"En teoría no hay diferencia entre teoría y práctica, pero en la práctica sí hay"
Pásate por <a href="http://www.solodivx.host.sk">Solodivx</a>
  #2 (permalink)  
Antiguo 31/08/2002, 06:02
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 15 años, 10 meses
Puntos: 1
Re: Pasar (a)txt(/a) a enlace como aquí

chekeaste str_replace()?
supongo que debe estar por ahi el tema, de todas formas me pegaste la curiosidad y voy a ver si saco algo. :cantar:
salu2

<p><font face="Arial, Helvetica, sans-serif" size="2">Usuario Registrado #
10462
[/CODE]</p>
  #3 (permalink)  
Antiguo 31/08/2002, 06:21
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Re: Pasar (a)txt(/a) a enlace como aquí

Sí, con str_replace lo hago poniendo (a)Enlace(txt)texto del enlace(/a) y sustituyo:

(a) por &lt;a href='
(txt) por '&gt;
(/a) por &lt;/a&gt;

Y lo consigo, pero quiero que salga como texto el mismo del enlace y limitado p. ej. a 25 caracteres (igual que se hace en estos foros)

Ten en cuenta que en la cadena hay (a)http://enlace(/a) y en el enlace hay &lt;a href=&quot;http://enlace&quot;&gt;http://enlace&lt;/a&gt;, es decir, que se repite el texto del enlace y eso es lo que no se hacer, además de lo de limitar caracteres.

Por cierto, que igual que en estos foros la cadena va metida dentro de más texto, vamos, que no es una cadena independiente.

<hr>
Saludos de Ferny desde <img src="http://www.forosdelweb.com/banderas/espana.gif" align=middle>
"En teoría no hay diferencia entre teoría y práctica, pero en la práctica sí hay"
Pásate por <a href="http://www.solodivx.host.sk">Solodivx</a>
  #4 (permalink)  
Antiguo 31/08/2002, 06:51
Avatar de ||Dj||  
Fecha de Ingreso: enero-2002
Mensajes: 2.349
Antigüedad: 15 años, 10 meses
Puntos: 1
Re: Pasar (a)txt(/a) a enlace como aquí

mmm...no se me ocurre nada en acerca de como mostrar una cantidad limitada de caracteres del link....en cuanto a lo otro estuve probando y creo que lo correcto es usar preg_replace.
salu2

<p><font face="Arial, Helvetica, sans-serif" size="2">Usuario Registrado #
10462
[/CODE]</p>
  #5 (permalink)  
Antiguo 31/08/2002, 08:59
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 16 años, 1 mes
Puntos: 5
Re: Pasar (a)txt(/a) a enlace como aquí

Para limitar el numero de caracteres tienes que hacer uso de la funcion substr(); revisala en el manual:

$cadena=&quot;cadena de mas de 25 caracteres&quot;;
echo substr($cadena,0,25);

<table style="border:1px solid black"><tr><td><center>
<embed width="88" height="144" src="http://www.alaplaya.com/~epplestun/yo.swf"></td></td><font face=verdana size=1>Ivan Rodriguez el poder es [B]PHP</p></td></tr></table>
  #6 (permalink)  
Antiguo 31/08/2002, 11:32
Avatar de ferny
Il capo della mafia
 
Fecha de Ingreso: febrero-2002
Ubicación: Al final del cable
Mensajes: 10.080
Antigüedad: 15 años, 9 meses
Puntos: 54
Re: Pasar (a)txt(/a) a enlace como aquí

Ya lo conseguí, me costó sangre, sudor y . Les dejo el código de la función:

Código:
 &lt;? 
function ponerenlace($cadena){
//Dividimos y cada trozo menos el 1º contendrá un (/a)
$trozo1=explode(&quot;(a)&quot;,$cadena);
//Sacamos cuál es la última clave
$m=sizeof($trozo1)-1;
//Formamos la nueva cadena 
foreach($trozo1 as $clave=&gt;$temporal){
//El primer trozo lo dejamos tal cual
if($clave==0){$txt=$temporal;}
//Buscamos donde se cierra el enlace
else{$trozo2=explode(&quot;(/a)&quot;,$temporal);
//Acortamos a 25 caracteres y que acabe en &quot;...&quot;
$trozo2[0]=substr($trozo2[0],0,25).&quot;...&quot;;
//Y construimos la nueva cadena
$txt.= &quot;&lt;a class='texto' href='&quot;.$trozo2[0].&quot;'&gt;&quot;.$trozo2[0].&quot;&lt;/a&gt; &quot;.$trozo2[1];
}}
//Nos retorna la cadena cambiada
$cadena=$txt;
return $cadena;}
?&gt;
<hr>
Saludos de Ferny desde <img src="http://www.forosdelweb.com/banderas/espana.gif" align=middle>
"En teoría no hay diferencia entre teoría y práctica, pero en la práctica sí hay"
Pásate por <a href="http://www.solodivx.host.sk">Solodivx</a>
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 00:50.