Comunidad de diseño web y desarrollo en internet online

Formateo de URL a HTML en PHP

Como ya sabréis los que desarrollais en php, a menudo necesitamos guardar URL's en nuestra base de datos. Así pues, con este tutorial conseguiremos por un lado "formatear" URL's de la base de datos para que funcionen correctamente como enlaces en nuestro website y por el otro, ahorraremos espacio ya que guardaremos todos los enlaces de un mismo registro en un solo campo, ya sea un Email o una URL. Cuando tenemos muchos registros y sobre todo cuando el que rellena los campos de la BD no entiende de URL's relativas o absolutas surge el problema de los enlaces, es decir, escribir "mailto:" delante o "http://" si el enlace no lo contiene ya... Pues nosotros ofrecemos la comodidad de no tener que preocuparnos por esto, el cliente te lo agradecerá : )
Pasamos a explicar el funcionamiento (lee los comentarios para entender el código):

Vamos a crear la función para formatear, le pasaremos el enlace como parámetro y guardaremos las URL's en la variable $miArray:

//pasamos la variable enlace como parametro donde estan almacenadas la/s urls.
function formatURL($enlace) {
//este es el array que devolveremos con los resultados.
$miArray = array();
//en primer lugar comprobamos con ereg() si hay espacios en la url, aunque también podéis utilizar otra separación entre url y url, teniendo siempre en cuenta que no debe ser ninguno que pueda existir nunca en una dirección de internet
if (ereg(" ", $enlace)) {
//a partir de aqui por cada resultado comprobamos si es correo o http: y realizamos el "formateo"
foreach (split(" ", $enlace) as $url) {
if (ereg("@", $url)) {
$miArray[] = "mailto:".$url."";
}
if (!ereg("http://",substr($url,0,7)) && !ereg("https://",substr($url,0,8)) && !ereg("@", $url)) {
$miArray[] = "http://".$url."";
} elseif (!ereg("@", $url)) {
$miArray[] = $url;
}
}
//sino hay mas de una url pues "formateamos"
} else {
if (ereg("@", $enlace))
$miArray[] = "mailto:".$enlace."";
if (!ereg("http://",substr($enlace,0,7)) && !ereg("https://",substr($enlace,0,8)) && !ereg("@", $enlace))
$miArray[] = "http://".$enlace."";
elseif (!ereg("@", $enlace))
$miArray[] = $enlace;
}
//devolvemos el array con uno o más resultados
return $miArray;
}

A continuación un ejemplo de uso de la función:

<?php
function mostrarArray ($array) {
foreach ($array as $clave) {
echo '< a href="'.$clave.'" target="blank">Enlace formateado! haz click sobre mí< /a>< br>';
}
}
mostrarArray(formatURL("www.cristalab.com [email protected]"));
?>

Con ésto mostraremos una lista de enlaces. Se puede utilizar de mil formas, todo depende de lo que queráis conseguir. El array que retornamos de la función nos puede servir para crear enlaces, insertarlos en una tabla de BD (si lo que tenemos es un formulario de un administrador de noticias por ejemplo), etc etc. Por supuesto el código es mejorable pero espero que os sirva como una buena referencia.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate