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
https://datoweb.com/

en esto
https://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: https://datoweb.com/';

echo auto_link($text);

?>
10
Puntos
1038
Visitas
7
Resp
Por alber hace 54 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 54 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 54 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 54 meses
Experto Sitio web
Respuesta #4
se puede al hacer clik se abra una pespaña nueva
Saludos
Gracias
0
Puntos
Por maticapu98 hace 54 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 54 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 54 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 48 meses
Experto Sitio web
Compartir en facebook
Compartir en twitter
Compartir
Para comentar Inicia sesión o Registrate