Bienvenido a datoweb.com!! En este foro podrás encontrar ayuda sobre diseño y desarrollo web en general. Si quieres formar parte de esta comunidad para pedir ayuda o colaborar ayudando a otros usuarios del foro solo tienes que registrarte desde el siguiente enlace: Registrarse en el Foro

Función auto enlace o autolink con php

vamos a ver una pequeña función php que genera enlaces automáticos a partir de una cadena de texto, una de las ventajas es que no tenemos que pedir al usuario que inserte un enlace con sus respectivas tags href, solo tiene que pegar el enlace tal cual

convierte esto
http://datoweb.com/

en esto
http://datoweb.com/

vamos con la función
function auto_link($text) {
  $pattern = "/(((http[s]?:\/\/)|(www\.))(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9.,_\/~#&=:;%+?-]+[a-z0-9\/#=?]{1,1})/is";
  $text = preg_replace($pattern, " <a href='$1'>$1</a>", $text);
  // fix URLs without protocols
  $text = preg_replace("/href='www/", "href='http://www", $text);
  return $text;
}
ahora un ejemplo muy sencillo
<?php 
function auto_link($text) {
  $pattern = "/(((http[s]?:\/\/)|(www\.))(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9.,_\/~#&=:;%+?-]+[a-z0-9\/#=?]{1,1})/is";
  $text = preg_replace($pattern, " <a href='$1'>$1</a>", $text);
  // fix URLs without protocols
  $text = preg_replace("/href='www/", "href='http://www", $text);
  return $text;
}
?>
<?php 

$text='Convertir la cadena en un enlace: http://datoweb.com/';

echo auto_link($text);

?>
10
Puntos
968
Visitas
7
Resp
Por alber hace 52 meses
Administrador

Respuesta #1

Está chévere la función, aunque no reconoce directamente los enlaces .es .ve .co .us
Para eso debe ser www.enlacen.com.es por ejemplo D:
Pero bueno ¡Funciona! jaja.
0
Puntos
Por Jose hace 52 meses
Experto Sitio web

Respuesta #2

claro cuando son dominios raros es otra historia, pues anímate y comparte tu una función que si los reconozca y agregas el enlace al tema en este hilo campeón
0
Puntos
Por alber hace 52 meses
Administrador

Respuesta #3

No me retes. Jajajaja, estaba intentando decifrar el código a ver si se podía hacer algo pero no entiendo nada xd
0
Puntos
Por Jose hace 52 meses
Experto Sitio web

Respuesta #4

se puede al hacer clik se abra una pespaña nueva
Saludos
Gracias
0
Puntos
Por maticapu98 hace 52 meses
Principiante

Respuesta #5

Si se puede amigo :-)
Lo que hay que haces es agregarle target='_blnak' a la quinta línea. Así.
$text = preg_replace($pattern, " <a href='$1' target='_blank'>$1</a>", $text);
5
Puntos
Por Jose hace 52 meses
Experto Sitio web

Respuesta #6

aquí va otra función mas compleja
//Convertir en link los http
function convertirLink($texto){

	/*** hacer en http.// todas las urls ***/
	$texto = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$texto);
	/*** hacer las url en link ***/
	$texto = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a title='Click para ir al link' target=\"_blank\" href=\"$1\">$1</A>",$texto);
	/*** hacer los emails en links***/
	$texto = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<A HREF=\"mailto:$1\">$1</A>",$texto);
	
	return $texto;
}
0
Puntos
Por alber hace 51 meses
Administrador

Respuesta #7

Link en PESTAÑA NUEVA.
target='_blank'
function auto_link($text) {
$pattern = "/(((http[s]?:\/\/)|(www\.))(([a-z][-a-z0-9]+\.)?[a-z][-a-z0-9]+\.[a-z]+(\.[a-z]{2,2})?)\/?[a-z0-9.,_\/~#&=:;%+?-]+[a-z0-9\/#=?]{1,1})/is";
$text = preg_replace($pattern, " <a href='$1' target='_blank'>$1</a>", $text);
// fix URLs without protocols
$text = preg_replace("/href='www/", "href='http://www", $text);
return $text;
}
15
Puntos
Por LeksanBoy hace 45 meses
Experto Sitio web

Relaccionados

Para comentar Inicia sesión o Registrate
Utilizamos cookies para mejorar la navegación en el sitio. Más información Aceptar