Limpiar en una cadena php acentos, ñ y espacios

Pequeña función para reemplazar acentos, ñ y espacios.
function sanear_string($cadena)
{
    $cadena = trim($cadena);
 
    $cadena = str_replace(
        array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä'),
        array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A'),
        $cadena
    );
 
    $cadena = str_replace(
        array('é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë'),
        array('e', 'e', 'e', 'e', 'E', 'E', 'E', 'E'),
        $cadena
    );
 
    $cadena = str_replace(
        array('í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î'),
        array('i', 'i', 'i', 'i', 'I', 'I', 'I', 'I'),
        $cadena
    );
 
    $cadena = str_replace(
        array('ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô'),
        array('o', 'o', 'o', 'o', 'O', 'O', 'O', 'O'),
        $cadena
    );
 
    $cadena = str_replace(
        array('ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü'),
        array('u', 'u', 'u', 'u', 'U', 'U', 'U', 'U'),
        $cadena
    );
 
    $cadena = str_replace(
        array('ñ', 'Ñ', 'ç', 'Ç'),
        array('n', 'N', 'c', 'C',),
        $cadena
    );
 
    //Esta parte se encarga de eliminar cualquier caracter extraño
    $cadena = str_replace(
        array("\\", "¨", "º", "-", "~",
             "#", "@", "|", "!", "\"",
             "·", "$", "%", "&", "/",
             "(", ")", "?", "'", "¡",
             "¿", "[", "^", "`", "]",
             "+", "}", "{", "¨", "´",
             ">", "<", ";", ",", ":",
             ".", " "),
        '',
        $cadena
    );
 
 
    return $cadena;
}
Especialmente util para nombres de archivos y URL’s.

Comentarios

  1. Funciona genial, pero fíjate que el parámetro de entrada en la función lo has llamado $string pero dentro se usa $cadena.

    Detallito insignificante, en cualquier caso.

    salu2

    ResponderEliminar
    Respuestas
    1. Gracias por la observación ya esta corregida :D

      Eliminar
    2. hola hermano esta bueno tu codigo me fue muy util,

      function limpiaurl($cadena)
      {
      $cadena = trim($cadena);

      $cadena = str_replace(
      array('á', 'à', 'ä', 'â', 'ª', 'Á', 'À', 'Â', 'Ä', 'é', 'è', 'ë', 'ê', 'É', 'È', 'Ê', 'Ë', 'í', 'ì', 'ï', 'î', 'Í', 'Ì', 'Ï', 'Î','ó', 'ò', 'ö', 'ô', 'Ó', 'Ò', 'Ö', 'Ô', 'ú', 'ù', 'ü', 'û', 'Ú', 'Ù', 'Û', 'Ü', 'ñ', 'Ñ', 'ç', 'Ç'),
      array('a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'i', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'n', 'N', 'c', 'C',),
      $cadena
      );

      $cadena = str_replace( //Esta parte se encarga de eliminar cualquier caracter extraño
      array("\\", "¨", "º", "-", "~", "#", "@", "|", "!", "\"", "·", "$", "%", "amp", "/", "(", ")", "?", "'", "¡", "¿", "[", "^", "`", "]", "}", "{", "¨", "´", ">", "<", ";", ",", ":", ".", " ", " - "),
      '',
      $cadena
      );

      return $cadena;
      }




      nota: como hago para separar las palabras:

      usando tu codigo me sale asi: estoesunejemplodelink

      quiero que me salga asii: esto-es-un-ejemplo-de-link

      Eliminar
    3. solo elimina el "-" del ultimo array

      Eliminar
  2. Muy bueno tu código!!! funciono al 100

    ResponderEliminar
  3. Muchas gracias por el aporte. Muy util

    ResponderEliminar

Publicar un comentario

Entradas populares