Reemplazar la ñ, acentos y espacios en PHP

[Actualizado] Hoy que tengo un poco de tiempo actualicé el snippet con mas caracteres y reemplace la función ereg_replace() porque en la versión de PHP 5.3 ya queda totalmente deprecada.

Pequeña función para reemplazar acentos, ñ y espacios.

Especialmente util para nombres de archivos y URL’s.

16 Comments

  • francisco 19/09/2009

    ¿no faltan las vocales con diéresis cómo ü Ä etc?

    y que te parece eliminar los símobolos tipo: & ¿?
    gracias por tu código, aquí te pongo el código algo modificado.

    function limpiar(text)
    {
    var text = text.toLowerCase(); // a minusculas

    text = text.replace(/[áàäâå]/g, ‘a’);
    text = text.replace(/[éèëê]/g, ‘e’);
    text = text.replace(/[íìïî]/g, ‘i’);
    text = text.replace(/[óòöô]/g, ‘o’);
    text = text.replace(/[úùüû]/g, ‘u’);
    text = text.replace(/[ýÿ]/g, ‘y’);
    text = text.replace(/[ñ]/g, ‘n’);
    text = text.replace(/[ç]/g, ‘c’);
    text = text.replace(/[‘”]/g, ”);
    text = text.replace(/[^a-zA-Z0-9-]/g, ‘ ‘); //text = text.replace(/W/g, ‘ ‘);
    text = text.replace(/s+/g, ‘-‘);
    text = text.replace(/(_)$/g, ”);
    text = text.replace(/^(_)/g, ”);

    return text;
    }

  • francisco 19/09/2009

    mierda, he colgado el código javascript en lugar de php. por cierto estaría bien poder suscribirse a este post para ver si me contestas. Un saludo

    function limpiar_caracteres_especiales($s) {
    $s = ereg_replace(“[áàâãªä@]”,”a”,$s);
    $s = ereg_replace(“[ÁÀÂÃÄ]”,”A”,$s);
    $s = ereg_replace(“[éèêë]”,”e”,$s);
    $s = ereg_replace(“[ÉÈÊË]”,”E”,$s);
    $s = ereg_replace(“[íìîï]”,”i”,$s);
    $s = ereg_replace(“[ÍÌÎÏ]”,”I”,$s);
    $s = ereg_replace(“[óòôõºö]”,”o”,$s);
    $s = ereg_replace(“[ÓÒÔÕÖ]”,”O”,$s);
    $s = ereg_replace(“[úùûü]”,”u”,$s);
    $s = ereg_replace(“[ÚÙÛÜ]”,”U”,$s);
    $s = str_replace(“[¿?]”,”_”,$s);
    $s = str_replace(” “,”-“,$s);
    $s = str_replace(“ñ”,”n”,$s);
    $s = str_replace(“Ñ”,”N”,$s);
    //para ampliar los caracteres a reemplazar agregar lineas de este tipo:
    //$s = str_replace(“caracter-que-queremos-cambiar”,”caracter-por-el-cual-lo-vamos-a-cambiar”,$s);
    return $s;
    }

  • source safe 07/12/2010

    gracias me has salvado de una buena tunda !! joder .tio que buena funcion !

  • dato 03/02/2011

    Gracias, me ha sido muy útil

  • Samuel 04/04/2011

    Excelente aportación, nos has ahorrado mucho dolor de cabeza.

  • wolvet 30/06/2011

    gracias !

  • Jask 08/08/2011

    Comentar que ereg_replace está obsoleta a partir de PHP 5.3.0 Es recomendable utilizar str_replace

    saludos

  • Juan 16/08/2011

    Hola, yo la he migrado a preg_replace que es la recomendación en lugar de ereg_replace que esta depreciada, aquí les va:

    function quitar_acento($s)
    {
    $s = preg_replace(“/[áàâãª]/”,”a”,$s);
    $s = preg_replace(“/[ÁÀÂÃ]/”,”A”,$s);
    $s = preg_replace(“/[ÍÌÎ]/”,”I”,$s);
    $s = preg_replace(“/[íìî]/”,”i”,$s);
    $s = preg_replace(“/[éèê]/”,”e”,$s);
    $s = preg_replace(“/[ÉÈÊ]/”,”E”,$s);
    $s = preg_replace(“/[óòôõº]/”,”o”,$s);
    $s = preg_replace(“/[ÓÒÔÕ]/”,”O”,$s);
    $s = preg_replace(“/[úùû]/”,”u”,$s);
    $s = preg_replace(“/[ÚÙÛ]/”,”U”,$s);
    $s = str_replace(“ç”,”c”,$s);
    $s = str_replace(“Ç”,”C”,$s);
    $s = str_replace(“ñ”,”n”,$s);
    $s = str_replace(“Ñ”,”N”,$s);

    return $s;
    }

    Saludos

  • Capy 17/08/2011

    Hola, no se si se dieron cuenta pero puse al principio del post la version actualizada de la funcion:

    http://www.ecapy.com/reemplazar-la-n-acentos-espacios-y-caracteres-especiales-con-php-actualizada/

    saludos

  • ron 20/07/2012

    No hay una función de PHP que realice el trabajo directamente?

    • Capy 20/07/2012

      noque yo sepa

  • santi 20/02/2013

    Espectacular señores!! Funciona a la perfección muchas gracias.

  • Juan Manuel 24/06/2013

    function quitarAcentos($text)
    {
    $text = htmlentities($text, ENT_QUOTES, ‘UTF-8’);
    $text = strtolower($text);
    $patron = array (
    // Espacios, puntos y comas por guion
    ‘/[., ]+/’ => ‘-‘,

    // Vocales
    ‘/à/’ => ‘a’,
    ‘/è/’ => ‘e’,
    ‘/ì/’ => ‘i’,
    ‘/ò/’ => ‘o’,
    ‘/ù/’ => ‘u’,

    ‘/á/’ => ‘a’,
    ‘/é/’ => ‘e’,
    ‘/í/’ => ‘i’,
    ‘/ó/’ => ‘o’,
    ‘/ú/’ => ‘u’,

    ‘/â/’ => ‘a’,
    ‘/ê/’ => ‘e’,
    ‘/î/’ => ‘i’,
    ‘/ô/’ => ‘o’,
    ‘/û/’ => ‘u’,

    ‘/ã/’ => ‘a’,
    ‘/&etilde;/’ => ‘e’,
    ‘/ĩ/’ => ‘i’,
    ‘/õ/’ => ‘o’,
    ‘/ũ/’ => ‘u’,

    ‘/ä/’ => ‘a’,
    ‘/ë/’ => ‘e’,
    ‘/ï/’ => ‘i’,
    ‘/ö/’ => ‘o’,
    ‘/ü/’ => ‘u’,

    ‘/ä/’ => ‘a’,
    ‘/ë/’ => ‘e’,
    ‘/ï/’ => ‘i’,
    ‘/ö/’ => ‘o’,
    ‘/ü/’ => ‘u’,

    // Otras letras y caracteres especiales
    ‘/å/’ => ‘a’,
    ‘/ñ/’ => ‘n’,

    // Agregar aqui mas caracteres si es necesario

    );

    $text = preg_replace(array_keys($patron),array_values($patron),$text);
    return $text;
    }

:).