una str_replace reemplazar primer parte especiales eliminar caracteres caracter cadena php string replace special-characters character-encoding

str_replace - substring php



cómo reemplazar caracteres especiales con los que están basados ​​en PHP? (8)

¿Cómo reemplazo?

  • "ã" con "a"
  • "é" con "e"

en PHP? es posible? He leído en algún lugar que podría hacer algunas matemáticas con el valor ascii del personaje base y el valor ascii del acento, pero no puedo encontrar ninguna referencia ahora.


La gente a menudo usa str_replace o strtr y una gran lista de caracteres para convertir "de" y "a", incluso si eso no parece muy bonito ...

Otra solución, supongo, podría ser usar algo como iconv con la opción //TRANSLIT - pero no siempre funciona, por lo que recuerdo ...

Además, si está utilizando PHP 5.3, la nueva clase de Normalizer podría ser interesante ;-)


Si no tiene acceso a la clase Normalizer o simplemente no desea usarla, puede usar la siguiente función para reemplazar la mayoría (¿todas?) De las acentuaciones comunes.

function Unaccent($string) { return preg_replace(''~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i'', ''$1'', htmlentities($string, ENT_QUOTES, ''UTF-8'')); }


Especialmente cuando los textos coinciden uno contra el otro o contra palabras clave, es útil normalizar los textos antes. La siguiente función elimina todos los signos diacríticos (marcas como acentos) de un texto codificado en UTF8 dado y devuelve ASCii-text.

Asegúrese de tener instalada la extensión PHP-Normalizer (intl e icu).

Sugerencia: también puede querer asignar el texto a minúsculas antes de ejecutar procedimientos de coincidencia ...

<?php function normalizeUtf8String( $s) { // Normalizer-class missing! if (! class_exists("Normalizer", $autoload = false)) return $original_string; // maps German (umlauts) and other European characters onto two characters before just removing diacritics $s = preg_replace( ''@/x{00c4}@u'' , "AE", $s ); // umlaut Ä => AE $s = preg_replace( ''@/x{00d6}@u'' , "OE", $s ); // umlaut Ö => OE $s = preg_replace( ''@/x{00dc}@u'' , "UE", $s ); // umlaut Ü => UE $s = preg_replace( ''@/x{00e4}@u'' , "ae", $s ); // umlaut ä => ae $s = preg_replace( ''@/x{00f6}@u'' , "oe", $s ); // umlaut ö => oe $s = preg_replace( ''@/x{00fc}@u'' , "ue", $s ); // umlaut ü => ue $s = preg_replace( ''@/x{00f1}@u'' , "ny", $s ); // ñ => ny $s = preg_replace( ''@/x{00ff}@u'' , "yu", $s ); // ÿ => yu // maps special characters (characters with diacritics) on their base-character followed by the diacritical mark // exmaple: Ú => U´, á => a` $s = Normalizer::normalize( $s, Normalizer::FORM_D ); $s = preg_replace( ''@/pM@u'' , "", $s ); // removes diacritics $s = preg_replace( ''@/x{00df}@u'' , "ss", $s ); // maps German ß onto ss $s = preg_replace( ''@/x{00c6}@u'' , "AE", $s ); // Æ => AE $s = preg_replace( ''@/x{00e6}@u'' , "ae", $s ); // æ => ae $s = preg_replace( ''@/x{0132}@u'' , "IJ", $s ); // ? => IJ $s = preg_replace( ''@/x{0133}@u'' , "ij", $s ); // ? => ij $s = preg_replace( ''@/x{0152}@u'' , "OE", $s ); // Œ => OE $s = preg_replace( ''@/x{0153}@u'' , "oe", $s ); // œ => oe $s = preg_replace( ''@/x{00d0}@u'' , "D", $s ); // Ð => D $s = preg_replace( ''@/x{0110}@u'' , "D", $s ); // Ð => D $s = preg_replace( ''@/x{00f0}@u'' , "d", $s ); // ð => d $s = preg_replace( ''@/x{0111}@u'' , "d", $s ); // d => d $s = preg_replace( ''@/x{0126}@u'' , "H", $s ); // H => H $s = preg_replace( ''@/x{0127}@u'' , "h", $s ); // h => h $s = preg_replace( ''@/x{0131}@u'' , "i", $s ); // i => i $s = preg_replace( ''@/x{0138}@u'' , "k", $s ); // ? => k $s = preg_replace( ''@/x{013f}@u'' , "L", $s ); // ? => L $s = preg_replace( ''@/x{0141}@u'' , "L", $s ); // L => L $s = preg_replace( ''@/x{0140}@u'' , "l", $s ); // ? => l $s = preg_replace( ''@/x{0142}@u'' , "l", $s ); // l => l $s = preg_replace( ''@/x{014a}@u'' , "N", $s ); // ? => N $s = preg_replace( ''@/x{0149}@u'' , "n", $s ); // ? => n $s = preg_replace( ''@/x{014b}@u'' , "n", $s ); // ? => n $s = preg_replace( ''@/x{00d8}@u'' , "O", $s ); // Ø => O $s = preg_replace( ''@/x{00f8}@u'' , "o", $s ); // ø => o $s = preg_replace( ''@/x{017f}@u'' , "s", $s ); // ? => s $s = preg_replace( ''@/x{00de}@u'' , "T", $s ); // Þ => T $s = preg_replace( ''@/x{0166}@u'' , "T", $s ); // T => T $s = preg_replace( ''@/x{00fe}@u'' , "t", $s ); // þ => t $s = preg_replace( ''@/x{0167}@u'' , "t", $s ); // t => t // remove all non-ASCii characters $s = preg_replace( ''@[^/0-/x80]@u'' , "", $s ); // possible errors in UTF8-regular-expressions if (empty($s)) return $original_string; else return $s; } ?>

La función anterior se basa principalmente en el siguiente artículo: http://ahinea.com/en/tech/accented-translate.html


usa PEAR I18N_UnicodeNormalizer-1.0.0

include(''…''); echo preg_replace( ''/(/P{L})/ui'', // replace all except members of Unicode class "letters", case insensitive '''', // with nothing I18N_UnicodeNormalizer::toNFKD(''ÅÉÏÔÙåéïôù'') // ù → u + ` );

→ AEIOUaeiou


Si ninguna de las otras soluciones funciona bien para usted, esto es lo que funcionó para mí:

<?php $string = "áéíóúÁ—whatever"; // create an array of the hex codes of the characters you want to replace (formatted as shown) and whatever you want to replace them with. $characters = array( "[/xF3]" => "&ocacute;", //ó "[/xFC]" => "&uuml;", //ü "[/xF1]" => "&ntilde;", //ñ "[/xEB]" => "&euml;", //ë "[/xE9]" => "&eacute;", //é "[/xBD]" => "&frac12;", //½ ); // note that you must use a two-digit hex code for whatever reason. // So, for example, although the hex code for an em dash is 2014, you have to use 97 instead. ("[/x97]" => "&mdash;") // separate the key->value array into two separate arrays. Or just make two arrays from the beginning, but it''s easier to read this way. foreach ($characters as $hex => $html) { $replaceThis[] = $hex; $replaceWith[] = $html; } $string = preg_replace($replaceThis, $replaceWith, $string); ?>

Puede que no sea la solución más elegante, pero funciona y no requiere conocimiento de expresiones regulares.


Para aquellos que no tienen php 5.3, encontré otra solución que funciona bien y parece muy completa. Aquí hay un enlace al sitio web del autor http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001 . Aquí está la función.

/** * Unaccent the input string string. An example string like `ÀØėÿᾜὨζὅБю` * will be translated to `AOeyIOzoBY`. More complete than : * strtr( (string)$str, * "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ", * "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn" ); * * @param $str input string * @param $utf8 if null, function will detect input string encoding * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001 * @return string input string without accent */ function remove_accents( $str, $utf8=true ) { $str = (string)$str; if( is_null($utf8) ) { if( !function_exists(''mb_detect_encoding'') ) { $utf8 = (strtolower( mb_detect_encoding($str) )==''utf-8''); } else { $length = strlen($str); $utf8 = true; for ($i=0; $i < $length; $i++) { $c = ord($str[$i]); if ($c < 0x80) $n = 0; # 0bbbbbbb elseif (($c & 0xE0) == 0xC0) $n=1; # 110bbbbb elseif (($c & 0xF0) == 0xE0) $n=2; # 1110bbbb elseif (($c & 0xF8) == 0xF0) $n=3; # 11110bbb elseif (($c & 0xFC) == 0xF8) $n=4; # 111110bb elseif (($c & 0xFE) == 0xFC) $n=5; # 1111110b else return false; # Does not match any model for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? if ((++$i == $length) || ((ord($str[$i]) & 0xC0) != 0x80)) { $utf8 = false; break; } } } } } if(!$utf8) $str = utf8_encode($str); $transliteration = array( ''IJ'' => ''I'', ''Ö'' => ''O'',''Œ'' => ''O'',''Ü'' => ''U'',''ä'' => ''a'',''æ'' => ''a'', ''ij'' => ''i'',''ö'' => ''o'',''œ'' => ''o'',''ü'' => ''u'',''ß'' => ''s'',''ſ'' => ''s'', ''À'' => ''A'',''Á'' => ''A'',''Â'' => ''A'',''Ã'' => ''A'',''Ä'' => ''A'',''Å'' => ''A'', ''Æ'' => ''A'',''Ā'' => ''A'',''Ą'' => ''A'',''Ă'' => ''A'',''Ç'' => ''C'',''Ć'' => ''C'', ''Č'' => ''C'',''Ĉ'' => ''C'',''Ċ'' => ''C'',''Ď'' => ''D'',''Đ'' => ''D'',''È'' => ''E'', ''É'' => ''E'',''Ê'' => ''E'',''Ë'' => ''E'',''Ē'' => ''E'',''Ę'' => ''E'',''Ě'' => ''E'', ''Ĕ'' => ''E'',''Ė'' => ''E'',''Ĝ'' => ''G'',''Ğ'' => ''G'',''Ġ'' => ''G'',''Ģ'' => ''G'', ''Ĥ'' => ''H'',''Ħ'' => ''H'',''Ì'' => ''I'',''Í'' => ''I'',''Î'' => ''I'',''Ï'' => ''I'', ''Ī'' => ''I'',''Ĩ'' => ''I'',''Ĭ'' => ''I'',''Į'' => ''I'',''İ'' => ''I'',''Ĵ'' => ''J'', ''Ķ'' => ''K'',''Ľ'' => ''K'',''Ĺ'' => ''K'',''Ļ'' => ''K'',''Ŀ'' => ''K'',''Ł'' => ''L'', ''Ñ'' => ''N'',''Ń'' => ''N'',''Ň'' => ''N'',''Ņ'' => ''N'',''Ŋ'' => ''N'',''Ò'' => ''O'', ''Ó'' => ''O'',''Ô'' => ''O'',''Õ'' => ''O'',''Ø'' => ''O'',''Ō'' => ''O'',''Ő'' => ''O'', ''Ŏ'' => ''O'',''Ŕ'' => ''R'',''Ř'' => ''R'',''Ŗ'' => ''R'',''Ś'' => ''S'',''Ş'' => ''S'', ''Ŝ'' => ''S'',''Ș'' => ''S'',''Š'' => ''S'',''Ť'' => ''T'',''Ţ'' => ''T'',''Ŧ'' => ''T'', ''Ț'' => ''T'',''Ù'' => ''U'',''Ú'' => ''U'',''Û'' => ''U'',''Ū'' => ''U'',''Ů'' => ''U'', ''Ű'' => ''U'',''Ŭ'' => ''U'',''Ũ'' => ''U'',''Ų'' => ''U'',''Ŵ'' => ''W'',''Ŷ'' => ''Y'', ''Ÿ'' => ''Y'',''Ý'' => ''Y'',''Ź'' => ''Z'',''Ż'' => ''Z'',''Ž'' => ''Z'',''à'' => ''a'', ''á'' => ''a'',''â'' => ''a'',''ã'' => ''a'',''ā'' => ''a'',''ą'' => ''a'',''ă'' => ''a'', ''å'' => ''a'',''ç'' => ''c'',''ć'' => ''c'',''č'' => ''c'',''ĉ'' => ''c'',''ċ'' => ''c'', ''ď'' => ''d'',''đ'' => ''d'',''è'' => ''e'',''é'' => ''e'',''ê'' => ''e'',''ë'' => ''e'', ''ē'' => ''e'',''ę'' => ''e'',''ě'' => ''e'',''ĕ'' => ''e'',''ė'' => ''e'',''ƒ'' => ''f'', ''ĝ'' => ''g'',''ğ'' => ''g'',''ġ'' => ''g'',''ģ'' => ''g'',''ĥ'' => ''h'',''ħ'' => ''h'', ''ì'' => ''i'',''í'' => ''i'',''î'' => ''i'',''ï'' => ''i'',''ī'' => ''i'',''ĩ'' => ''i'', ''ĭ'' => ''i'',''į'' => ''i'',''ı'' => ''i'',''ĵ'' => ''j'',''ķ'' => ''k'',''ĸ'' => ''k'', ''ł'' => ''l'',''ľ'' => ''l'',''ĺ'' => ''l'',''ļ'' => ''l'',''ŀ'' => ''l'',''ñ'' => ''n'', ''ń'' => ''n'',''ň'' => ''n'',''ņ'' => ''n'',''ʼn'' => ''n'',''ŋ'' => ''n'',''ò'' => ''o'', ''ó'' => ''o'',''ô'' => ''o'',''õ'' => ''o'',''ø'' => ''o'',''ō'' => ''o'',''ő'' => ''o'', ''ŏ'' => ''o'',''ŕ'' => ''r'',''ř'' => ''r'',''ŗ'' => ''r'',''ś'' => ''s'',''š'' => ''s'', ''ť'' => ''t'',''ù'' => ''u'',''ú'' => ''u'',''û'' => ''u'',''ū'' => ''u'',''ů'' => ''u'', ''ű'' => ''u'',''ŭ'' => ''u'',''ũ'' => ''u'',''ų'' => ''u'',''ŵ'' => ''w'',''ÿ'' => ''y'', ''ý'' => ''y'',''ŷ'' => ''y'',''ż'' => ''z'',''ź'' => ''z'',''ž'' => ''z'',''Α'' => ''A'', ''Ά'' => ''A'',''Ἀ'' => ''A'',''Ἁ'' => ''A'',''Ἂ'' => ''A'',''Ἃ'' => ''A'',''Ἄ'' => ''A'', ''Ἅ'' => ''A'',''Ἆ'' => ''A'',''Ἇ'' => ''A'',''ᾈ'' => ''A'',''ᾉ'' => ''A'',''ᾊ'' => ''A'', ''ᾋ'' => ''A'',''ᾌ'' => ''A'',''ᾍ'' => ''A'',''ᾎ'' => ''A'',''ᾏ'' => ''A'',''Ᾰ'' => ''A'', ''Ᾱ'' => ''A'',''Ὰ'' => ''A'',''ᾼ'' => ''A'',''Β'' => ''B'',''Γ'' => ''G'',''Δ'' => ''D'', ''Ε'' => ''E'',''Έ'' => ''E'',''Ἐ'' => ''E'',''Ἑ'' => ''E'',''Ἒ'' => ''E'',''Ἓ'' => ''E'', ''Ἔ'' => ''E'',''Ἕ'' => ''E'',''Ὲ'' => ''E'',''Ζ'' => ''Z'',''Η'' => ''I'',''Ή'' => ''I'', ''Ἠ'' => ''I'',''Ἡ'' => ''I'',''Ἢ'' => ''I'',''Ἣ'' => ''I'',''Ἤ'' => ''I'',''Ἥ'' => ''I'', ''Ἦ'' => ''I'',''Ἧ'' => ''I'',''ᾘ'' => ''I'',''ᾙ'' => ''I'',''ᾚ'' => ''I'',''ᾛ'' => ''I'', ''ᾜ'' => ''I'',''ᾝ'' => ''I'',''ᾞ'' => ''I'',''ᾟ'' => ''I'',''Ὴ'' => ''I'',''ῌ'' => ''I'', ''Θ'' => ''T'',''Ι'' => ''I'',''Ί'' => ''I'',''Ϊ'' => ''I'',''Ἰ'' => ''I'',''Ἱ'' => ''I'', ''Ἲ'' => ''I'',''Ἳ'' => ''I'',''Ἴ'' => ''I'',''Ἵ'' => ''I'',''Ἶ'' => ''I'',''Ἷ'' => ''I'', ''Ῐ'' => ''I'',''Ῑ'' => ''I'',''Ὶ'' => ''I'',''Κ'' => ''K'',''Λ'' => ''L'',''Μ'' => ''M'', ''Ν'' => ''N'',''Ξ'' => ''K'',''Ο'' => ''O'',''Ό'' => ''O'',''Ὀ'' => ''O'',''Ὁ'' => ''O'', ''Ὂ'' => ''O'',''Ὃ'' => ''O'',''Ὄ'' => ''O'',''Ὅ'' => ''O'',''Ὸ'' => ''O'',''Π'' => ''P'', ''Ρ'' => ''R'',''Ῥ'' => ''R'',''Σ'' => ''S'',''Τ'' => ''T'',''Υ'' => ''Y'',''Ύ'' => ''Y'', ''Ϋ'' => ''Y'',''Ὑ'' => ''Y'',''Ὓ'' => ''Y'',''Ὕ'' => ''Y'',''Ὗ'' => ''Y'',''Ῠ'' => ''Y'', ''Ῡ'' => ''Y'',''Ὺ'' => ''Y'',''Φ'' => ''F'',''Χ'' => ''X'',''Ψ'' => ''P'',''Ω'' => ''O'', ''Ώ'' => ''O'',''Ὠ'' => ''O'',''Ὡ'' => ''O'',''Ὢ'' => ''O'',''Ὣ'' => ''O'',''Ὤ'' => ''O'', ''Ὥ'' => ''O'',''Ὦ'' => ''O'',''Ὧ'' => ''O'',''ᾨ'' => ''O'',''ᾩ'' => ''O'',''ᾪ'' => ''O'', ''ᾫ'' => ''O'',''ᾬ'' => ''O'',''ᾭ'' => ''O'',''ᾮ'' => ''O'',''ᾯ'' => ''O'',''Ὼ'' => ''O'', ''ῼ'' => ''O'',''α'' => ''a'',''ά'' => ''a'',''ἀ'' => ''a'',''ἁ'' => ''a'',''ἂ'' => ''a'', ''ἃ'' => ''a'',''ἄ'' => ''a'',''ἅ'' => ''a'',''ἆ'' => ''a'',''ἇ'' => ''a'',''ᾀ'' => ''a'', ''ᾁ'' => ''a'',''ᾂ'' => ''a'',''ᾃ'' => ''a'',''ᾄ'' => ''a'',''ᾅ'' => ''a'',''ᾆ'' => ''a'', ''ᾇ'' => ''a'',''ὰ'' => ''a'',''ᾰ'' => ''a'',''ᾱ'' => ''a'',''ᾲ'' => ''a'',''ᾳ'' => ''a'', ''ᾴ'' => ''a'',''ᾶ'' => ''a'',''ᾷ'' => ''a'',''β'' => ''b'',''γ'' => ''g'',''δ'' => ''d'', ''ε'' => ''e'',''έ'' => ''e'',''ἐ'' => ''e'',''ἑ'' => ''e'',''ἒ'' => ''e'',''ἓ'' => ''e'', ''ἔ'' => ''e'',''ἕ'' => ''e'',''ὲ'' => ''e'',''ζ'' => ''z'',''η'' => ''i'',''ή'' => ''i'', ''ἠ'' => ''i'',''ἡ'' => ''i'',''ἢ'' => ''i'',''ἣ'' => ''i'',''ἤ'' => ''i'',''ἥ'' => ''i'', ''ἦ'' => ''i'',''ἧ'' => ''i'',''ᾐ'' => ''i'',''ᾑ'' => ''i'',''ᾒ'' => ''i'',''ᾓ'' => ''i'', ''ᾔ'' => ''i'',''ᾕ'' => ''i'',''ᾖ'' => ''i'',''ᾗ'' => ''i'',''ὴ'' => ''i'',''ῂ'' => ''i'', ''ῃ'' => ''i'',''ῄ'' => ''i'',''ῆ'' => ''i'',''ῇ'' => ''i'',''θ'' => ''t'',''ι'' => ''i'', ''ί'' => ''i'',''ϊ'' => ''i'',''ΐ'' => ''i'',''ἰ'' => ''i'',''ἱ'' => ''i'',''ἲ'' => ''i'', ''ἳ'' => ''i'',''ἴ'' => ''i'',''ἵ'' => ''i'',''ἶ'' => ''i'',''ἷ'' => ''i'',''ὶ'' => ''i'', ''ῐ'' => ''i'',''ῑ'' => ''i'',''ῒ'' => ''i'',''ῖ'' => ''i'',''ῗ'' => ''i'',''κ'' => ''k'', ''λ'' => ''l'',''μ'' => ''m'',''ν'' => ''n'',''ξ'' => ''k'',''ο'' => ''o'',''ό'' => ''o'', ''ὀ'' => ''o'',''ὁ'' => ''o'',''ὂ'' => ''o'',''ὃ'' => ''o'',''ὄ'' => ''o'',''ὅ'' => ''o'', ''ὸ'' => ''o'',''π'' => ''p'',''ρ'' => ''r'',''ῤ'' => ''r'',''ῥ'' => ''r'',''σ'' => ''s'', ''ς'' => ''s'',''τ'' => ''t'',''υ'' => ''y'',''ύ'' => ''y'',''ϋ'' => ''y'',''ΰ'' => ''y'', ''ὐ'' => ''y'',''ὑ'' => ''y'',''ὒ'' => ''y'',''ὓ'' => ''y'',''ὔ'' => ''y'',''ὕ'' => ''y'', ''ὖ'' => ''y'',''ὗ'' => ''y'',''ὺ'' => ''y'',''ῠ'' => ''y'',''ῡ'' => ''y'',''ῢ'' => ''y'', ''ῦ'' => ''y'',''ῧ'' => ''y'',''φ'' => ''f'',''χ'' => ''x'',''ψ'' => ''p'',''ω'' => ''o'', ''ώ'' => ''o'',''ὠ'' => ''o'',''ὡ'' => ''o'',''ὢ'' => ''o'',''ὣ'' => ''o'',''ὤ'' => ''o'', ''ὥ'' => ''o'',''ὦ'' => ''o'',''ὧ'' => ''o'',''ᾠ'' => ''o'',''ᾡ'' => ''o'',''ᾢ'' => ''o'', ''ᾣ'' => ''o'',''ᾤ'' => ''o'',''ᾥ'' => ''o'',''ᾦ'' => ''o'',''ᾧ'' => ''o'',''ὼ'' => ''o'', ''ῲ'' => ''o'',''ῳ'' => ''o'',''ῴ'' => ''o'',''ῶ'' => ''o'',''ῷ'' => ''o'',''А'' => ''A'', ''Б'' => ''B'',''В'' => ''V'',''Г'' => ''G'',''Д'' => ''D'',''Е'' => ''E'',''Ё'' => ''E'', ''Ж'' => ''Z'',''З'' => ''Z'',''И'' => ''I'',''Й'' => ''I'',''К'' => ''K'',''Л'' => ''L'', ''М'' => ''M'',''Н'' => ''N'',''О'' => ''O'',''П'' => ''P'',''Р'' => ''R'',''С'' => ''S'', ''Т'' => ''T'',''У'' => ''U'',''Ф'' => ''F'',''Х'' => ''K'',''Ц'' => ''T'',''Ч'' => ''C'', ''Ш'' => ''S'',''Щ'' => ''S'',''Ы'' => ''Y'',''Э'' => ''E'',''Ю'' => ''Y'',''Я'' => ''Y'', ''а'' => ''A'',''б'' => ''B'',''в'' => ''V'',''г'' => ''G'',''д'' => ''D'',''е'' => ''E'', ''ё'' => ''E'',''ж'' => ''Z'',''з'' => ''Z'',''и'' => ''I'',''й'' => ''I'',''к'' => ''K'', ''л'' => ''L'',''м'' => ''M'',''н'' => ''N'',''о'' => ''O'',''п'' => ''P'',''р'' => ''R'', ''с'' => ''S'',''т'' => ''T'',''у'' => ''U'',''ф'' => ''F'',''х'' => ''K'',''ц'' => ''T'', ''ч'' => ''C'',''ш'' => ''S'',''щ'' => ''S'',''ы'' => ''Y'',''э'' => ''E'',''ю'' => ''Y'', ''я'' => ''Y'',''ð'' => ''d'',''Ð'' => ''D'',''þ'' => ''t'',''Þ'' => ''T'',''ა'' => ''a'', ''ბ'' => ''b'',''გ'' => ''g'',''დ'' => ''d'',''ე'' => ''e'',''ვ'' => ''v'',''ზ'' => ''z'', ''თ'' => ''t'',''ი'' => ''i'',''კ'' => ''k'',''ლ'' => ''l'',''მ'' => ''m'',''ნ'' => ''n'', ''ო'' => ''o'',''პ'' => ''p'',''ჟ'' => ''z'',''რ'' => ''r'',''ს'' => ''s'',''ტ'' => ''t'', ''უ'' => ''u'',''ფ'' => ''p'',''ქ'' => ''k'',''ღ'' => ''g'',''ყ'' => ''q'',''შ'' => ''s'', ''ჩ'' => ''c'',''ც'' => ''t'',''ძ'' => ''d'',''წ'' => ''t'',''ჭ'' => ''c'',''ხ'' => ''k'', ''ჯ'' => ''j'',''ჰ'' => ''h'' ); $str = str_replace( array_keys( $transliteration ), array_values( $transliteration ), $str); return $str; } //- remove_accents()


Uso de str_replace corto con caracteres personalizados:

<?php $original_string = "¿Dónde está el niño que vive aquí? En el témpano o en el iglú. ÁFRICA, MÉXICO, ÍNDICE, CANCIÓN y NÚMERO."; $some_special_chars = array("á", "é", "í", "ó", "ú", "Á", "É", "Í", "Ó", "Ú", "ñ", "Ñ"); $replacement_chars = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U", "n", "N"); $replaced_string = str_replace($some_special_chars, $replacement_chars, $original_string); echo $replaced_string; // outputs ''¿Donde esta el nino que vive aqui? En el tempano o en el iglu. AFRICA, MEXICO, INDICE, CANCION y NUMERO.'' ?>


Esta respuesta es incorrecta. No entendí la Normalización Unicode cuando lo escribí. Mira el comentario y el enlace de francadaval

Mira la clase de Normalizador para hacer esto. La documentación es buena, así que solo la vincularé en lugar de repetir cosas aquí:

http://www.php.net/manual/en/class.normalizer.php

Específicamente, el miembro normalizado de esa clase:

http://www.php.net/manual/en/normalizer.normalize.php

Tenga en cuenta que la normalización de Unicode tiene varias formas, y parece que desea la Descomposición de Compatibilidad del Formulario de Normalización KD (NFKD), aunque debe leer la documentación para asegurarse.

No debe intentar ejecutar su propia función para esto: hay demasiadas cosas que pueden salir mal, y usar la función provista es una idea mucho mejor.