Return to Snippet

Revision: 57890
at June 13, 2012 20:40 by MGHollander


Updated Code
/**
 * Unaccent a string 
 *
 * An example string like ÀØėÿᾜὨζὅБю will be translated to AOeyIOzoBY. 
 * More complete than :
 *
 *  strtr(
 *      (string)$str,
 *      "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 *      "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"
 *  );
 *
 * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001
 * @param $str input string
 * @param $utf8 if null, function will detect input string encoding
 * @return string input string without accent
 */
function removeAccents($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',
    );
    
    return str_replace(array_keys($transliteration), array_values($transliteration), $str);
}

Revision: 57889
at June 13, 2012 20:37 by MGHollander


Updated Code
<?php

/**
 * Unaccent a string 
 *
 * An example string like ÀØėÿᾜὨζὅБю will be translated to AOeyIOzoBY. 
 * More complete than :
 *
 *  strtr(
 *      (string)$str,
 *      "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 *      "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"
 *  );
 *
 * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001
 * @param $str input string
 * @param $utf8 if null, function will detect input string encoding
 * @return string input string without accent
 */
function removeAccents($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',
    );
    
    return str_replace(array_keys($transliteration), array_values($transliteration), $str);
}

Revision: 57888
at June 13, 2012 20:36 by MGHollander


Updated Code
<?php

/**
 * Unaccent a string 
 *
 * An example string like ÀØėÿᾜὨζὅБю will be translated to AOeyIOzoBY. 
 * More complete than :
 *
 *  strtr(
 *      (string)$str,
 *      "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 *      "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"
 *  );
 *
 * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001
 * @param $str input string
 * @param $utf8 if null, function will detect input string encoding
 * @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',
    );
    
    return str_replace(array_keys($transliteration), array_values($transliteration), $str);
}

Revision: 57887
at June 13, 2012 20:34 by MGHollander


Updated Code
<?php

/**
 * Unaccent a string 
 *
 * An example string like ÀØėÿᾜὨζὅБю will be translated to AOeyIOzoBY. 
 * More complete than :
 *
 *  strtr(
 *      (string)$str,
 *      "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 *      "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"
 *  );
 *
 * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001
 * @param $str input string
 * @param $utf8 if null, function will detect input string encoding
 * @return string input string without accent
 */
public 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',
    );
    
    return str_replace(array_keys($transliteration), array_values($transliteration), $str);
}

Revision: 57886
at June 13, 2012 20:32 by MGHollander


Updated Code
<?php

/**
 * Unaccent a string 
 *
 * An example string like ÀØėÿᾜὨζὅБю will be translated to AOeyIOzoBY. 
 * More complete than :
 *
 *  strtr(
 *      (string)$str,
 *      "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
 *      "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn"
 *  );
 *
 * @author http://www.evaisse.net/2008/php-translit-remove-accent-unaccent-21001
 * @param $str input string
 * @param $utf8 if null, function will detect input string encoding
 * @return string input string without accent
 */
public 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',
    );
    
    return str_replace(array_keys($transliteration), array_values($transliteration), $str);
}

Revision: 57885
at June 13, 2012 20:14 by MGHollander


Updated Code
<?php

/**
 * Unaccent a 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
 * @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;
}

Revision: 57884
at June 13, 2012 20:10 by MGHollander


Updated Code
/**
 * Unaccent a 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 removeAccents($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(
        '?' => 'I', 'Ö' => 'O','Œ' => 'O','Ü' => 'U','ä' => 'a','æ' => 'a',
        '?' => 'i','ö' => 'o','œ' => 'o','ü' => 'u','ß' => 's','?' => 's',
        'À' => 'A','Á' => 'A','Â' => 'A','Ã' => 'A','Ä' => 'A','Å' => 'A',
        'Æ' => 'A','A' => 'A','A' => 'A','A' => 'A','Ç' => 'C','C' => 'C',
        'C' => 'C','C' => 'C','C' => 'C','D' => 'D','Ð' => 'D','È' => 'E',
        'É' => 'E','Ê' => 'E','Ë' => 'E','E' => 'E','E' => 'E','E' => 'E',
        'E' => 'E','E' => 'E','G' => 'G','G' => 'G','G' => 'G','G' => 'G',
        'H' => 'H','H' => 'H','Ì' => 'I','Í' => 'I','Î' => 'I','Ï' => 'I',
        'I' => 'I','I' => 'I','I' => 'I','I' => 'I','I' => 'I','J' => 'J',
        'K' => 'K','L' => 'K','L' => 'K','L' => 'K','?' => 'K','L' => 'L',
        'Ñ' => 'N','N' => 'N','N' => 'N','N' => 'N','?' => 'N','Ò' => 'O',
        'Ó' => 'O','Ô' => 'O','Õ' => 'O','Ø' => 'O','O' => 'O','O' => 'O',
        'O' => 'O','R' => 'R','R' => 'R','R' => 'R','S' => 'S','S' => 'S',
        'S' => 'S','?' => 'S','Å ' => 'S','T' => 'T','T' => 'T','T' => 'T',
        '?' => 'T','Ù' => 'U','Ú' => 'U','Û' => 'U','U' => 'U','U' => 'U',
        'U' => 'U','U' => 'U','U' => 'U','U' => 'U','W' => 'W','Y' => 'Y',
        'Ÿ' => 'Y','Ý' => 'Y','Z' => 'Z','Z' => 'Z','Ž' => 'Z','à' => 'a',
        'á' => 'a','â' => 'a','ã' => 'a','a' => 'a','a' => 'a','a' => 'a',
        'å' => 'a','ç' => 'c','c' => 'c','c' => 'c','c' => 'c','c' => 'c',
        'd' => 'd','d' => 'd','è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
        'e' => 'e','e' => 'e','e' => 'e','e' => 'e','e' => 'e','Æ’' => 'f',
        'g' => 'g','g' => 'g','g' => 'g','g' => 'g','h' => 'h','h' => 'h',
        'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i','i' => 'i','i' => 'i',
        'i' => 'i','i' => 'i','i' => 'i','j' => 'j','k' => 'k','?' => 'k',
        'l' => 'l','l' => 'l','l' => 'l','l' => 'l','?' => 'l','ñ' => 'n',
        'n' => 'n','n' => 'n','n' => 'n','?' => 'n','?' => 'n','ò' => 'o',
        'ó' => 'o','ô' => 'o','õ' => 'o','ø' => 'o','o' => 'o','o' => 'o',
        'o' => 'o','r' => 'r','r' => 'r','r' => 'r','s' => 's','Å¡' => 's',
        't' => 't','ù' => 'u','ú' => 'u','û' => 'u','u' => 'u','u' => 'u',
        'u' => 'u','u' => 'u','u' => 'u','u' => 'u','w' => 'w','ÿ' => 'y',
        'ý' => 'y','y' => 'y','z' => 'z','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' => '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' => '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' => 'S','?' => 'T','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','F' => 'F','?' => 'X','?' => 'P','O' => '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','?' => 'a','ß' => 'b','?' => 'g','d' => 'd',
        'e' => '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' => 'p','?' => 'r','?' => 'r','?' => 'r','s' => 's',
        '?' => 's','t' => 't','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','f' => '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;
}

Revision: 57883
at June 13, 2012 20:08 by MGHollander


Updated Code
/**
 * Unaccent the input string string. An example string like ÀØeÿ??????
 * 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 removeAccents($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(
        '?' => 'I', 'Ö' => 'O','Œ' => 'O','Ü' => 'U','ä' => 'a','æ' => 'a',
        '?' => 'i','ö' => 'o','œ' => 'o','ü' => 'u','ß' => 's','?' => 's',
        'À' => 'A','Á' => 'A','Â' => 'A','Ã' => 'A','Ä' => 'A','Å' => 'A',
        'Æ' => 'A','A' => 'A','A' => 'A','A' => 'A','Ç' => 'C','C' => 'C',
        'C' => 'C','C' => 'C','C' => 'C','D' => 'D','Ð' => 'D','È' => 'E',
        'É' => 'E','Ê' => 'E','Ë' => 'E','E' => 'E','E' => 'E','E' => 'E',
        'E' => 'E','E' => 'E','G' => 'G','G' => 'G','G' => 'G','G' => 'G',
        'H' => 'H','H' => 'H','Ì' => 'I','Í' => 'I','Î' => 'I','Ï' => 'I',
        'I' => 'I','I' => 'I','I' => 'I','I' => 'I','I' => 'I','J' => 'J',
        'K' => 'K','L' => 'K','L' => 'K','L' => 'K','?' => 'K','L' => 'L',
        'Ñ' => 'N','N' => 'N','N' => 'N','N' => 'N','?' => 'N','Ò' => 'O',
        'Ó' => 'O','Ô' => 'O','Õ' => 'O','Ø' => 'O','O' => 'O','O' => 'O',
        'O' => 'O','R' => 'R','R' => 'R','R' => 'R','S' => 'S','S' => 'S',
        'S' => 'S','?' => 'S','Å ' => 'S','T' => 'T','T' => 'T','T' => 'T',
        '?' => 'T','Ù' => 'U','Ú' => 'U','Û' => 'U','U' => 'U','U' => 'U',
        'U' => 'U','U' => 'U','U' => 'U','U' => 'U','W' => 'W','Y' => 'Y',
        'Ÿ' => 'Y','Ý' => 'Y','Z' => 'Z','Z' => 'Z','Ž' => 'Z','à' => 'a',
        'á' => 'a','â' => 'a','ã' => 'a','a' => 'a','a' => 'a','a' => 'a',
        'å' => 'a','ç' => 'c','c' => 'c','c' => 'c','c' => 'c','c' => 'c',
        'd' => 'd','d' => 'd','è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
        'e' => 'e','e' => 'e','e' => 'e','e' => 'e','e' => 'e','Æ’' => 'f',
        'g' => 'g','g' => 'g','g' => 'g','g' => 'g','h' => 'h','h' => 'h',
        'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i','i' => 'i','i' => 'i',
        'i' => 'i','i' => 'i','i' => 'i','j' => 'j','k' => 'k','?' => 'k',
        'l' => 'l','l' => 'l','l' => 'l','l' => 'l','?' => 'l','ñ' => 'n',
        'n' => 'n','n' => 'n','n' => 'n','?' => 'n','?' => 'n','ò' => 'o',
        'ó' => 'o','ô' => 'o','õ' => 'o','ø' => 'o','o' => 'o','o' => 'o',
        'o' => 'o','r' => 'r','r' => 'r','r' => 'r','s' => 's','Å¡' => 's',
        't' => 't','ù' => 'u','ú' => 'u','û' => 'u','u' => 'u','u' => 'u',
        'u' => 'u','u' => 'u','u' => 'u','u' => 'u','w' => 'w','ÿ' => 'y',
        'ý' => 'y','y' => 'y','z' => 'z','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' => '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' => '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' => 'S','?' => 'T','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','F' => 'F','?' => 'X','?' => 'P','O' => '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','?' => 'a','ß' => 'b','?' => 'g','d' => 'd',
        'e' => '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' => 'p','?' => 'r','?' => 'r','?' => 'r','s' => 's',
        '?' => 's','t' => 't','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','f' => '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;
}

Revision: 57882
at June 13, 2012 20:07 by MGHollander


Updated Code
/**
 * Unaccent the input string string. An example string like `��eÿ??????`
 * 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 removeAccents($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(
        '?' => 'I', '�' => 'O','�' => 'O','�' => 'U','ä' => 'a','æ' => 'a',
        '?' => 'i','ö' => 'o','�' => 'o','ü' => 'u','�' => 's','?' => 's',
        '�' => 'A','�' => 'A','�' => 'A','�' => 'A','�' => 'A','�' => 'A',
        '�' => 'A','A' => 'A','A' => 'A','A' => 'A','�' => 'C','C' => 'C',
        'C' => 'C','C' => 'C','C' => 'C','D' => 'D','�' => 'D','�' => 'E',
        '�' => 'E','�' => 'E','�' => 'E','E' => 'E','E' => 'E','E' => 'E',
        'E' => 'E','E' => 'E','G' => 'G','G' => 'G','G' => 'G','G' => 'G',
        'H' => 'H','H' => 'H','�' => 'I','�' => 'I','�' => 'I','�' => 'I',
        'I' => 'I','I' => 'I','I' => 'I','I' => 'I','I' => 'I','J' => 'J',
        'K' => 'K','L' => 'K','L' => 'K','L' => 'K','?' => 'K','L' => 'L',
        '�' => 'N','N' => 'N','N' => 'N','N' => 'N','?' => 'N','�' => 'O',
        '�' => 'O','�' => 'O','�' => 'O','�' => 'O','O' => 'O','O' => 'O',
        'O' => 'O','R' => 'R','R' => 'R','R' => 'R','S' => 'S','S' => 'S',
        'S' => 'S','?' => 'S','Å ' => 'S','T' => 'T','T' => 'T','T' => 'T',
        '?' => 'T','�' => 'U','�' => 'U','�' => 'U','U' => 'U','U' => 'U',
        'U' => 'U','U' => 'U','U' => 'U','U' => 'U','W' => 'W','Y' => 'Y',
        'Ÿ' => 'Y','�' => 'Y','Z' => 'Z','Z' => 'Z','Ž' => 'Z','à' => 'a',
        'á' => 'a','â' => 'a','ã' => 'a','a' => 'a','a' => 'a','a' => 'a',
        'å' => 'a','ç' => 'c','c' => 'c','c' => 'c','c' => 'c','c' => 'c',
        'd' => 'd','d' => 'd','è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
        'e' => 'e','e' => 'e','e' => 'e','e' => 'e','e' => 'e','�' => 'f',
        'g' => 'g','g' => 'g','g' => 'g','g' => 'g','h' => 'h','h' => 'h',
        'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i','i' => 'i','i' => 'i',
        'i' => 'i','i' => 'i','i' => 'i','j' => 'j','k' => 'k','?' => 'k',
        'l' => 'l','l' => 'l','l' => 'l','l' => 'l','?' => 'l','ñ' => 'n',
        'n' => 'n','n' => 'n','n' => 'n','?' => 'n','?' => 'n','ò' => 'o',
        'ó' => 'o','ô' => 'o','õ' => 'o','ø' => 'o','o' => 'o','o' => 'o',
        'o' => 'o','r' => 'r','r' => 'r','r' => 'r','s' => 's','Å¡' => 's',
        't' => 't','ù' => 'u','ú' => 'u','û' => 'u','u' => 'u','u' => 'u',
        'u' => 'u','u' => 'u','u' => 'u','u' => 'u','w' => 'w','ÿ' => 'y',
        'ý' => 'y','y' => 'y','z' => 'z','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' => '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' => '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' => 'S','?' => 'T','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','F' => 'F','?' => 'X','?' => 'P','O' => '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','?' => 'a','�' => 'b','?' => 'g','d' => 'd',
        'e' => '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' => 'p','?' => 'r','?' => 'r','?' => 'r','s' => 's',
        '?' => 's','t' => 't','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','f' => '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;
}

Revision: 57881
at June 13, 2012 19:58 by MGHollander


Initial Code
/**
 * Unaccent the input string string. An example string like `ÀØeÿ??????`
 * 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 removeAccents($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(
        '?' => 'I', 'Ö' => 'O','Œ' => 'O','Ü' => 'U','ä' => 'a','æ' => 'a',
        '?' => 'i','ö' => 'o','œ' => 'o','ü' => 'u','ß' => 's','?' => 's',
        'À' => 'A','Á' => 'A','Â' => 'A','Ã' => 'A','Ä' => 'A','Å' => 'A',
        'Æ' => 'A','A' => 'A','A' => 'A','A' => 'A','Ç' => 'C','C' => 'C',
        'C' => 'C','C' => 'C','C' => 'C','D' => 'D','Ð' => 'D','È' => 'E',
        'É' => 'E','Ê' => 'E','Ë' => 'E','E' => 'E','E' => 'E','E' => 'E',
        'E' => 'E','E' => 'E','G' => 'G','G' => 'G','G' => 'G','G' => 'G',
        'H' => 'H','H' => 'H','Ì' => 'I','Í' => 'I','Î' => 'I','Ï' => 'I',
        'I' => 'I','I' => 'I','I' => 'I','I' => 'I','I' => 'I','J' => 'J',
        'K' => 'K','L' => 'K','L' => 'K','L' => 'K','?' => 'K','L' => 'L',
        'Ñ' => 'N','N' => 'N','N' => 'N','N' => 'N','?' => 'N','Ò' => 'O',
        'Ó' => 'O','Ô' => 'O','Õ' => 'O','Ø' => 'O','O' => 'O','O' => 'O',
        'O' => 'O','R' => 'R','R' => 'R','R' => 'R','S' => 'S','S' => 'S',
        'S' => 'S','?' => 'S','Å ' => 'S','T' => 'T','T' => 'T','T' => 'T',
        '?' => 'T','Ù' => 'U','Ú' => 'U','Û' => 'U','U' => 'U','U' => 'U',
        'U' => 'U','U' => 'U','U' => 'U','U' => 'U','W' => 'W','Y' => 'Y',
        'Ÿ' => 'Y','Ý' => 'Y','Z' => 'Z','Z' => 'Z','Ž' => 'Z','à' => 'a',
        'á' => 'a','â' => 'a','ã' => 'a','a' => 'a','a' => 'a','a' => 'a',
        'å' => 'a','ç' => 'c','c' => 'c','c' => 'c','c' => 'c','c' => 'c',
        'd' => 'd','d' => 'd','è' => 'e','é' => 'e','ê' => 'e','ë' => 'e',
        'e' => 'e','e' => 'e','e' => 'e','e' => 'e','e' => 'e','Æ’' => 'f',
        'g' => 'g','g' => 'g','g' => 'g','g' => 'g','h' => 'h','h' => 'h',
        'ì' => 'i','í' => 'i','î' => 'i','ï' => 'i','i' => 'i','i' => 'i',
        'i' => 'i','i' => 'i','i' => 'i','j' => 'j','k' => 'k','?' => 'k',
        'l' => 'l','l' => 'l','l' => 'l','l' => 'l','?' => 'l','ñ' => 'n',
        'n' => 'n','n' => 'n','n' => 'n','?' => 'n','?' => 'n','ò' => 'o',
        'ó' => 'o','ô' => 'o','õ' => 'o','ø' => 'o','o' => 'o','o' => 'o',
        'o' => 'o','r' => 'r','r' => 'r','r' => 'r','s' => 's','Å¡' => 's',
        't' => 't','ù' => 'u','ú' => 'u','û' => 'u','u' => 'u','u' => 'u',
        'u' => 'u','u' => 'u','u' => 'u','u' => 'u','w' => 'w','ÿ' => 'y',
        'ý' => 'y','y' => 'y','z' => 'z','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' => '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' => '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' => 'S','?' => 'T','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y','?' => 'Y',
        '?' => 'Y','?' => 'Y','F' => 'F','?' => 'X','?' => 'P','O' => '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','?' => 'a','ß' => 'b','?' => 'g','d' => 'd',
        'e' => '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' => 'p','?' => 'r','?' => 'r','?' => 'r','s' => 's',
        '?' => 's','t' => 't','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y','?' => 'y',
        '?' => 'y','?' => 'y','f' => '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;
}

Initial URL


Initial Description
Unaccent a string.

 An example string like ÀØėÿᾜὨζὅБю will be translated to AOeyIOzoBY.

Initial Title
Unaccent a string

Initial Tags


Initial Language
PHP