Limpiar cadenas con PHP para que sean seguras
Limpiar cadenas con PHP. Un carácter que no es un alfabeto o carácter numérico se denomina carácter especial. Debemos eliminar todos los caracteres especiales de la cadena para que podamos leer la cadena de forma clara y fluida. Los caracteres especiales no son legibles, por lo que sería bueno eliminarlos antes de leerlos.
En este articulo veremos dos formas de limpiar Títulos para URL de una manera muy simple. Usaremos dos funciones según el caso y les comentare que esto me soluciono el problema que tenia:
Primera Opción: Limpiar cadenas con PHP
La solución para este caso es modificar la expresión regular y este método acepta dos parámetros:
strtolower: es la expresión regular con la que se debe hacer coincidir la cadena. Puede ser de diferentes tipos.
preg_replace: la cadena que se sustituirán por la coincidencia.
<?php function slugify($string){ return strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $string), '-')); } ?>
Salida en el navegador
<?php echo slugify('El método POST de Muñoz'); //Salida en el navegador // => el-metodo-post-de-munoz ?>
Del mismo modo, si la cadena contiene muchos caracteres especiales, puede eliminarlos todos simplemente seleccionando caracteres alfanuméricos, por ejemplo, usando la función ”slugify«, que reemplazará cualquier cosa con String vacía excepto «A Z, a z, 0 a 9«. Veamos un par de ejemplos para eliminar todos los caracteres especiales de cadena en PHP.
Segunda Opción: limpia_url
En mi caso personal suelo desarrollar sistemas web para empresas y suelo llegar a un punto donde el cliente solicita URL amigables para optimizar el SEO en Google.
Todas las páginas que se generan tienen que poseer Url Amigables y veremos cómo realizar esta acción.
Primero. Crear URL si caracteres especiales y para realizar esto me apoyo en esta función llamada «limpia_url» para limpiar los títulos y luego almacenarlo en la base de datos.
Aquí, mostrare la función que uso para mis proyectos.
<?php function limpia_url( $string, $separator = '-' ) { $accents_regex = '~&([a-z]{1,2})(?:acute|cedil|circ|Grave|lig|orn|ring|slash|th|tilde|uml);~i'; $special_cases = array( '&' => 'and', "'" => ''); $string = mb_strtolower( trim( $string ), 'UTF-8' ); $string = str_replace( array_keys($special_cases), array_values( $special_cases), $string ); $string = preg_replace( $accents_regex, '$1', htmlentities( $string, ENT_QUOTES, 'UTF-8' ) ); $string = preg_replace("/[^a-z0-9]/u", "$separator", $string); $string = preg_replace("/[$separator]+/u", "$separator", $string); return $string; } ?>
Uso de la función
<?php echo limpia_url('El método POST de Muñoz'); //Salida en el navegador // => el-metodo-post-de-munoz ?>
CONCLUSIÓN
Hemos usado dos funciones para eliminar caracteres especiales en los títulos o URL, la primera función es un poco más rápida y la segunda es una función más grande pero más concisa a la hora de realizar limpiezas en las cadenas.
Estas funciones pueden limpiar cadenas de cualquier tipo y de diferentes usos, por ejemplo:
- URL amigables
- Nombre de archivos, imágenes, etc.
Espero que este post les ayude en sus proyectos