Foros del Web » Programando para Internet » PHP »

Reconocer URL

Estas en el tema de Reconocer URL en el foro de PHP en Foros del Web. Hola amigos, ando programando un sistema de noticias, pero ahora se me ocurrio la idea de como hacerle para que identifique un enlace, osea que ...
  #1 (permalink)  
Antiguo 16/09/2005, 15:29
 
Fecha de Ingreso: diciembre-2003
Ubicación: Campehce, Mexico
Mensajes: 325
Antigüedad: 14 años
Puntos: 0
Reconocer URL

Hola amigos, ando programando un sistema de noticias, pero ahora se me ocurrio la idea de como hacerle para que identifique un enlace, osea que si en la noticiapongo www.forosdelweb.com me lo ponga como link.

Alguien sabe??

Saludos
  #2 (permalink)  
Antiguo 16/09/2005, 15:48
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
deberias hacerlo con bbcode es la forma mas simple que encuentro...

podrías hacerlo como... [url.][/url.]

o personalizarlo... [enlace][/enlace]
  #3 (permalink)  
Antiguo 16/09/2005, 15:51
 
Fecha de Ingreso: septiembre-2005
Mensajes: 101
Antigüedad: 12 años, 2 meses
Puntos: 0
he encontrado lo que buscas

tendrias que hacer esto

Código:
<?php
    $url="http://www.buayacorp.com]Programación y Diseño[/url]";
    $url=preg_replace("`\[url\s*=\s*(.*)?\](.*?)\[/url\]`is", '<a href="$1">$2</a>', $url);
    echo $url;
?>
entonces seria para poner este enlace...

http://www.forosdelweb.com

asi...

Código:
[.url=forosdelweb]www.forosdelweb.com[/.url]
pero sin puntos

espero haberte ayudado
  #4 (permalink)  
Antiguo 17/09/2005, 09:26
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 14 años, 1 mes
Puntos: 45
Y no lo puede hacer con expresiones regulares buscando www.xxxxxxxxx.com? Yo creo que seria la forma mas natural, sin tener que añadir codigo de mas a tu noticia, y asi quedara mas reutilizable.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 17/09/2005, 10:20
 
Fecha de Ingreso: diciembre-2003
Ubicación: Campehce, Mexico
Mensajes: 325
Antigüedad: 14 años
Puntos: 0
Haber, lo que quiero es hacer que me reconozca una url como link, osea que si pongo www.forosdelweb.com lo reconozca como url y no como texto, bien ??
Pero yo quiero que me reconozca cualquier direccion, no solo foros del web ...
La pregunta seria :

¿Como puedo hacer para que me reconozca una url?
  #6 (permalink)  
Antiguo 17/09/2005, 10:36
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
ya te respondio papixulooo...
hay que usar expresiones regulares si o si y hacer el reemplazo cuando mostras la noticia, O en caso de que la noticia nunca sea editada, es mejor hacer el reemplazo cuando la envias.
__________________
Internet Explorer SuckS
Download FireFox
  #7 (permalink)  
Antiguo 17/09/2005, 10:41
 
Fecha de Ingreso: diciembre-2003
Ubicación: Campehce, Mexico
Mensajes: 325
Antigüedad: 14 años
Puntos: 0
Ok ya entendi, ahora resulta que la noticia la tengo en un campo de la base de datos:

Seria

Código PHP:
$url $row[noticia];
$url $url=preg_replace("`\[url\s*=\s*(.*)?\](.*?)\[/url\]`is"'<a href="$1">$2</a>'$url);
echo 
$url
Asi se imprimiria la noticia con los enlaces en BBCode ??
  #8 (permalink)  
Antiguo 30/09/2005, 17:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 9
Antigüedad: 13 años, 10 meses
Puntos: 0
Yo tengo el mismo problema y he hecho un código php recorriendo todo el texto.

1)todos los www los paso a http, y así tengo todos los url de la misma forma, y luego 2)por cada url le añado <a href=....>url </a>.

Pero el problema es k recorro dos veces el texto y eso es costoso. Además como busco urls que acaben con espacio si acaba con return tengo problemas. Me podríais decir una forma más fácil sin obligar al usuario a utilizar bbcode?

/////////////////////// CODIGO PHP /////////////////////
function reconocer_url($texto){
$offset=1;
$start=true;
$inici="www";
$texto=' '.$texto.' ';
while($start){
$start = strpos($texto, $inici,$offset);

if($start!=false){
$offset_plain=$start-$offset;//Obtenemos la longitud de texto normal
$offset_normal=$offset;//inicio del texto normal
$end = strpos($texto, ' ',$start);
$offset=$end+1;//Offset siguiente bucle

$end=$end-$start;
$url1=substr($texto,$start,$end);
//echo "start $start";
//echo "end $end";
//echo "url1 $url1";
$posic=$start-7;
if($posic >= 0){
$caracter= strpos($texto,"http://",$posic);
//echo "posicion http $caracter";
//echo "start $start";
if($caracter==$start-7){
$url2=substr($texto,$start,$end).' ';
}
else{
$url2="http://".substr($texto,$start,$end).' ';
}
}
else{
$url2="http://".substr($texto,$start,$end).' ';
}
//str_replace($url1, $url2,$start);

//echo "url2 $url2";
$result=$result.substr($texto,$offset_normal,$offs et_plain).$url2;


}
}

if(offset < strlen($texto)){
$result=$result.substr($texto,$offset,strlen($text o)-offset);}

//echo "result1 es $result";

$inici="http";
$start=true;
$offset=1;
$texto=' '.$result.' ';
$result=' ';
while($start)
{
$start = strpos($texto, $inici,$offset);
//echo "start $start";
if($start!=false){
$offset_plain=$start-$offset;//Obtenemos la longitud de texto normal
$offset_normal=$offset;//inicio del texto normal
$end = strpos($texto, ' ',$start);
$offset=$end+1;//Offset siguiente bucle

$end=$end-$start;
$url=substr($texto,$start,$end);
//echo "url $url";
$link='<a href='.$url.'>'.$url.' '.'</a>';
//str_replace($url, $link,$start);

//echo "url $link";
$result=$result.substr($texto,$offset_normal,$offs et_plain).$link;

}

}
if(offset < strlen($texto)){
$result=$result.substr($texto,$offset,strlen($text o)-offset);}

return $result;
}
////////////////////////////////////////////////////////////////////////////////////////////
  #9 (permalink)  
Antiguo 07/10/2005, 23:31
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 12 años, 7 meses
Puntos: 0
Orale eso es mucho código como para hacer algo que se pudo habe hecho asi:
Código PHP:
function txt2link($txt) {

    
$patrones = array ( "/(http\:\/\/[^\s]+)/i",
            
"/(ftp\:\/\/[^\s]+)/i",      
            
"/(mailto\:([^\s]+))/i",
            
"/\*(.+)\*/i",
            
"/\_(.+)\_/i",
            
"/\r/i");
    
$reemplazo =  array ( "<a href=\"\\1\" rel=\"external\">\\1</a>"
            
"<a href=\"\\1\" rel=\"external\">\\1</a>"
            
"<a href=\"\\1\" rel=\"external\">\\2</a>"
            
"<b>\\1</b>",
            
"<em>\\1</em>",
            
"<br/>\n");
            
return 
preg_replace($patrones,$reemplazo$txt);
}; 
Asi si haces txt2link('Un texto blablabla un enlace http://forosdelweb.com');
imprimiria un texto blablabla un enlace <a href="http://www.forosdelweb.com" rel="external">http://www.forosdelweb.com</a>

__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
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 16:00.