Función PHP para pasar texto a url válida

Snippet de PHP que convierte cualquier cadena de texto en una URL válida limpiandola de caracteres no permitidos.

Con el siguiente snippet de PHP podrás transformar cadenas de texto cualesquiera en urls válidas. Por lo tanto, lo que hace la siguiente función es traducir caracteres del texto, que no están permitidos en urls, por otros que si lo están, logrando así urls correctas para una página web cualquiera.

Ten en cuenta que el siguiente snippet traduce la parte de las urls que va después del dominio, lo que se conoce en desarrollo web como la URI. 

//REMPLAZAR ACENTOS, CARACTERES INVALIDOS Y ESPACIOS
function get_url_valid_text($string_in){
	$string_output=mb_strtolower($string_in, 'UTF-8');
	//caracteres inválidos en una url
	$find=array('¥','µ','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ð','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ÿ','\'','"');
	//traduccion caracteres válidos
	$repl=array('-','-','a','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','ny','o','o','o','o','o','o','u','u','u','u','y','y','','' );
	$string_output=str_replace($find, $repl, $string_output);
	//más caracteres inválidos en una url que sustituiremos por guión
	$find=array(' ', '&','%','$','·','!','(',')','?','¿','¡',':','+','*','\n','\r\n', '\\', '´', '`', '¨', ']', '[');
	$string_output=str_replace($find, '-', $string_output);
	$string_output=str_replace('--', '', $string_output);
	return $string_output;
}

Ejemplos de uso transformando texto en urls

A continuación te dejo varios ejemplos de uso para la anterior función. Verás cómo, a pesar de que la entrada contiene caracteres especiales, la salida de la función es una url completamente válida y lista para utilizarse en un sitio web.

 

<?php
//ejemplo 1
$texto = 'función PHP para traducir texto con caracteres especiales a urls válidas';
$uri_valida = get_url_valid_text( $texto ); //devuelve "funcion-php-para-traducir-texto-con-caracteres-especiales-a-urls-validas"

//ejemplo 2
$texto2 = 'la araña de google puede visitar esta PÁGINA';
$uri_valida2 = get_url_valid_text( $texto2 ); //devuelve "la-arana-de-google-puede-visitar-esta-pagina"
?>

Claves para pasar de cadenas de texto a uris válidas

A continuación te dejo los puntos o funciones claves de este pequeño script para obtener uris a partir de un texto:

  1. Pasar el texto a minúsculas pero respetando que este pueda contener símbolos y caracteres especiales. Para esto se utiliza la versión UTF-8 de la función php strtolower que es mb_strtolower( $texto, $codificacion ).
  2. Componer un array con todos aquellos símbolos especiales o caracteres que sabemos son comunes  pero que no están permitidos en una URL.
  3. Crear otro array con el mismo número de posiciones con la traducción que queremos para cada símbolo.
  4. Reemplazar unos por otros con la función str_replace de PHP vanilla.
  5. Crear otro array para caracteres no admitidos pero esta vez pensando en aquellos que sustituiros por espacios (en una url los guiones equivalen a un espacio).

 

Conclusiones sobre obtener urls a partir de cualquier texto

Estoy seguro de que está función te será realmente útil, y es que podemos decir que es un básico en el desarrollo de aplicaciones web dónde cualquier usuario pueda manipular urls, ya que no suelen conocer las restricciones que existen. Además, es común cometer errores a lo largo del tiempo. Errores que dejarían una página sin funcionamiento, produciendo un error que puede ocasionar, en el peor de los casos, la perdida de la página en Google.

Por mi parte, te recomiendo añadir esta función para obtener urls a partir de texto en PHP en una Clase de Helpers dónde agrupes todas esas funciones relacionadas con URLS. Por ejemplo en una clase titulada UrlHelpers, para posteriormente llamar a la función con un nombre claro y fácil de buscar UtilHelpers::get_url_valid_text ( 'mi texto' );

Por último, si has leído hasta aquí me gustaría preguntarte ¿te ha gustado? Si es así te agradecería mucho que compartieras esta publicación sobre php y urls para apoyar la creación de este tipo de contenido gratuito y que siga llegando a más gente, gracias.

Sobre el autor

Javier Gómez Redactor en Srcodigofuente.es

Javier Gómez

Ingeniero técnico en informática de gestión. Desarrollador web freelance y profesor de desarrollo web a partes iguales. Testarudo autodidacta, creativo, perfeccionista y alma libre.

Cargando comentarios

Utilizamos "cookies" para información estadística. Si continúas navegando aceptas su uso.