Changeset 3970

Show
Ignore:
Timestamp:
03/11/08 03:57:50 (16 months ago)
Author:
jwage
Message:

fixes #846

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/0.10/lib/Doctrine/Inflector.php

    r3884 r3970  
    242242 
    243243    /** 
     244     * seemsUtf8 
     245     * 
     246     * By bmorel at ssi dot fr 
     247     * 
     248     * @param string $str  
     249     * @return void 
     250     */ 
     251    public static function seemsUtf8($string) 
     252    { 
     253        for ($i = 0; $i < strlen($string); $i++) { 
     254                if (ord($string[$i]) < 0x80) continue; # 0bbbbbbb 
     255                elseif ((ord($string[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb 
     256                elseif ((ord($string[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb 
     257                elseif ((ord($string[$i]) & 0xF8) == 0xF0) $n=3; # 11110bbb 
     258                elseif ((ord($string[$i]) & 0xFC) == 0xF8) $n=4; # 111110bb 
     259                elseif ((ord($string[$i]) & 0xFE) == 0xFC) $n=5; # 1111110b 
     260                else return false; # Does not match any model 
     261                for ($j=0; $j<$n; $j++) { # n bytes matching 10bbbbbb follow ? 
     262                        if ((++$i == strlen($string)) || ((ord($string[$i]) & 0xC0) != 0x80)) 
     263                        return false; 
     264                } 
     265        } 
     266        return true; 
     267    } 
     268     
     269    /** 
    244270     * unaccent 
    245271     * 
    246      * @param string $text  
    247      * @return void 
    248      */ 
    249     public static function unaccent($text) 
    250     { 
    251         $chars = array('À' => 'A', 
    252                       'Á' => 'A', 
    253                       'Â' => 'A', 
    254                       'Ã' => 'A', 
    255                       'Ä' => 'A', 
    256                       'Å' => 'A', 
    257                       'Æ' => 'AE', 
    258                       'Ā' => 'A', 
    259                       'Ą' => 'A', 
    260                       'Ă' => 'A', 
    261                       'Ç' => 'C', 
    262                       'Ć' => 'C', 
    263                       'Č' => 'C', 
    264                       'Ĉ' => 'C', 
    265                       'Ċ' => 'C', 
    266                       'Ď' => 'D', 
    267                       'Đ' => 'D', 
    268                       'È' => 'E', 
    269                       'É' => 'E', 
    270                       'Ê' => 'E', 
    271                       'Ë' => 'E', 
    272                       'Ē' => 'E', 
    273                       'Ę' => 'E', 
    274                       'Ě' => 'E', 
    275                       'Ĕ' => 'E', 
    276                       'Ė' => 'E', 
    277                       'Ĝ' => 'G', 
    278                       'Ğ' => 'G', 
    279                       'Ġ' => 'G', 
    280                       'Ģ' => 'G', 
    281                       'Ĥ' => 'H', 
    282                       'Ħ' => 'H', 
    283                       'Ì' => 'I', 
    284                       'Í' => 'I', 
    285                       'Î' => 'I', 
    286                       'Ï' => 'I', 
    287                       'Ī' => 'I', 
    288                       'Ĩ' => 'I', 
    289                       'Ĭ' => 'I', 
    290                       'Į' => 'I', 
    291                       'İ' => 'I', 
    292                       'IJ' => 'IJ', 
    293                       'Ĵ' => 'J', 
    294                       'Ķ' => 'K', 
    295                       'Ľ' => 'L', 
    296                       'Ĺ' => 'L', 
    297                       'Ļ' => 'K', 
    298                       'Ŀ' => 'K', 
    299                       'Ł' => 'L', 
    300                       'Ñ' => 'N', 
    301                       'Ń' => 'N', 
    302                       'Ň' => 'N', 
    303                       'Ņ' => 'N', 
    304                       'Ŋ' => 'N', 
    305                       'Ò' => 'O', 
    306                       'Ó' => 'O', 
    307                       'Ô' => 'O', 
    308                       'Õ' => 'O', 
    309                       'Ö' => 'O', 
    310                       'Ø' => 'O', 
    311                       'Ō' => 'O', 
    312                       'Ő' => 'O', 
    313                       'Ŏ' => 'O', 
    314                       'Œ' => 'OE', 
    315                       'Ŕ' => 'R', 
    316                       'Ř' => 'R', 
    317                       'Ŗ' => 'R', 
    318                       'Ś' => 'S', 
    319                       'Ş' => 'S', 
    320                       'Ŝ' => 'S', 
    321                       'Ș' => 'S', 
    322                       'Š' => 'S', 
    323                       'Ť' => 'T', 
    324                       'Ţ' => 'T', 
    325                       'Ŧ' => 'T', 
    326                       'Ț' => 'T', 
    327                       'Ù' => 'U', 
    328                       'Ú' => 'U', 
    329                       'Û' => 'U', 
    330                       'Ü' => 'Ue', 
    331                       'Ū' => 'U', 
    332                       'Ů' => 'U', 
    333                       'Ű' => 'U', 
    334                       'Ŭ' => 'U', 
    335                       'Ũ' => 'U', 
    336                       'Ų' => 'U', 
    337                       'Ŵ' => 'W', 
    338                       'Ŷ' => 'Y', 
    339                       'Ÿ' => 'Y', 
    340                       'Ý' => 'Y', 
    341                       'Ź' => 'Z', 
    342                       'Ż' => 'Z', 
    343                       'Ž' => 'Z', 
    344                       'à' => 'a', 
    345                       'á' => 'a', 
    346                       'â' => 'a', 
    347                       'ã' => 'a', 
    348                       'ä' => 'a', 
    349                       'ā' => 'a', 
    350                       'ą' => 'a', 
    351                       'ă' => 'a', 
    352                       'å' => 'a', 
    353                       'æ' => 'ae', 
    354                       'ç' => 'c', 
    355                       'ć' => 'c', 
    356                       'č' => 'c', 
    357                       'ĉ' => 'c', 
    358                       'ċ' => 'c', 
    359                       'ď' => 'd', 
    360                       'đ' => 'd', 
    361                       'è' => 'e', 
    362                       'é' => 'e', 
    363                       'ê' => 'e', 
    364                       'ë' => 'e', 
    365                       'ē' => 'e', 
    366                       'ę' => 'e', 
    367                       'ě' => 'e', 
    368                       'ĕ' => 'e', 
    369                       'ė' => 'e', 
    370                       'ƒ' => 'f', 
    371                       'ĝ' => 'g', 
    372                       'ğ' => 'g', 
    373                       'ġ' => 'g', 
    374                       'ģ' => 'g', 
    375                       'ĥ' => 'h', 
    376                       'ħ' => 'h', 
    377                       'ì' => 'i', 
    378                       'í' => 'i', 
    379                       'î' => 'i', 
    380                       'ï' => 'i', 
    381                       'ī' => 'i', 
    382                       'ĩ' => 'i', 
    383                       'ĭ' => 'i', 
    384                       'į' => 'i', 
    385                       'ı' => 'i', 
    386                       'ij' => 'ij', 
    387                       'ĵ' => 'j', 
    388                       'ķ' => 'k', 
    389                       'ĸ' => 'k', 
    390                       'ł' => 'l', 
    391                       'ľ' => 'l', 
    392                       'ĺ' => 'l', 
    393                       'ļ' => 'l', 
    394                       'ŀ' => 'l', 
    395                       'ñ' => 'n', 
    396                       'ń' => 'n', 
    397                       'ň' => 'n', 
    398                       'ņ' => 'n', 
    399                       'ʼn' => 'n', 
    400                       'ŋ' => 'n', 
    401                       'ò' => 'o', 
    402                       'ó' => 'o', 
    403                       'ô' => 'o', 
    404                       'õ' => 'o', 
    405                       'ö' => 'o', 
    406                       'ø' => 'o', 
    407                       'ō' => 'o', 
    408                       'ő' => 'o', 
    409                       'ŏ' => 'o', 
    410                       'œ' => 'oe', 
    411                       'ŕ' => 'r', 
    412                       'ř' => 'r', 
    413                       'ŗ' => 'r', 
    414                       'ś' => 's', 
    415                       'š' => 's', 
    416                       'ť' => 't', 
    417                       'ù' => 'u', 
    418                       'ú' => 'u', 
    419                       'û' => 'u', 
    420                       'ü' => 'u', 
    421                       'ū' => 'u', 
    422                       'ů' => 'u', 
    423                       'ű' => 'u', 
    424                       'ŭ' => 'u', 
    425                       'ũ' => 'u', 
    426                       'ų' => 'u', 
    427                       'ŵ' => 'w', 
    428                       'ÿ' => 'y', 
    429                       'ý' => 'y', 
    430                       'ŷ' => 'y', 
    431                       'ż' => 'z', 
    432                       'ź' => 'z', 
    433                       'ž' => 'z', 
    434                       'ß' => 'ss', 
    435                       'ſ' => 'ss', 
    436                       'Α' => 'A', 
    437                       'Ά' => 'A', 
    438                       'Ἀ' => 'A', 
    439                       'Ἁ' => 'A', 
    440                       'Ἂ' => 'A', 
    441                       'Ἃ' => 'A', 
    442                       'Ἄ' => 'A', 
    443                       'Ἅ' => 'A', 
    444                       'Ἆ' => 'A', 
    445                       'Ἇ' => 'A', 
    446                       'ᾈ' => 'A', 
    447                       'ᾉ' => 'A', 
    448                       'ᾊ' => 'A', 
    449                       'ᾋ' => 'A', 
    450                       'ᾌ' => 'A', 
    451                       'ᾍ' => 'A', 
    452                       'ᾎ' => 'A', 
    453                       'ᾏ' => 'A', 
    454                       'Ᾰ' => 'A', 
    455                       'Ᾱ' => 'A', 
    456                       'Ὰ' => 'A', 
    457                       'Ά' => 'A', 
    458                       'ᾼ' => 'A', 
    459                       'Β' => 'B', 
    460                       'Γ' => 'G', 
    461                       'Δ' => 'D', 
    462                       'Ε' => 'E', 
    463                       'Έ' => 'E', 
    464                       'Ἐ' => 'E', 
    465                       'Ἑ' => 'E', 
    466                       'Ἒ' => 'E', 
    467                       'Ἓ' => 'E', 
    468                       'Ἔ' => 'E', 
    469                       'Ἕ' => 'E', 
    470                       'Έ' => 'E', 
    471                       'Ὲ' => 'E', 
    472                       'Ζ' => 'Z', 
    473                       'Η' => 'I', 
    474                       'Ή' => 'I', 
    475                       'Ἠ' => 'I', 
    476                       'Ἡ' => 'I', 
    477                       'Ἢ' => 'I', 
    478                       'Ἣ' => 'I', 
    479                       'Ἤ' => 'I', 
    480                       'Ἥ' => 'I', 
    481                       'Ἦ' => 'I', 
    482                       'Ἧ' => 'I', 
    483                       'ᾘ' => 'I', 
    484                       'ᾙ' => 'I', 
    485                       'ᾚ' => 'I', 
    486                       'ᾛ' => 'I', 
    487                       'ᾜ' => 'I', 
    488                       'ᾝ' => 'I', 
    489                       'ᾞ' => 'I', 
    490                       'ᾟ' => 'I', 
    491                       'Ὴ' => 'I', 
    492                       'Ή' => 'I', 
    493                       'ῌ' => 'I', 
    494                       'Θ' => 'TH', 
    495                       'Ι' => 'I', 
    496                       'Ί' => 'I', 
    497                       'Ϊ' => 'I', 
    498                       'Ἰ' => 'I', 
    499                       'Ἱ' => 'I', 
    500                       'Ἲ' => 'I', 
    501                       'Ἳ' => 'I', 
    502                       'Ἴ' => 'I', 
    503                       'Ἵ' => 'I', 
    504                       'Ἶ' => 'I', 
    505                       'Ἷ' => 'I', 
    506                       'Ῐ' => 'I', 
    507                       'Ῑ' => 'I', 
    508                       'Ὶ' => 'I', 
    509                       'Ί' => 'I', 
    510                       'Κ' => 'K', 
    511                       'Λ' => 'L', 
    512                       'Μ' => 'M', 
    513                       'Ν' => 'N', 
    514                       'Ξ' => 'KS', 
    515                       'Ο' => 'O', 
    516                       'Ό' => 'O', 
    517                       'Ὀ' => 'O', 
    518                       'Ὁ' => 'O', 
    519                       'Ὂ' => 'O', 
    520                       'Ὃ' => 'O', 
    521                       'Ὄ' => 'O', 
    522                       'Ὅ' => 'O', 
    523                       'Ὸ' => 'O', 
    524                       'Ό' => 'O', 
    525                       'Π' => 'P', 
    526                       'Ρ' => 'R', 
    527                       'Ῥ' => 'R', 
    528                       'Σ' => 'S', 
    529                       'Τ' => 'T', 
    530                       'Υ' => 'Y', 
    531                       'Ύ' => 'Y', 
    532                       'Ϋ' => 'Y', 
    533                       'Ὑ' => 'Y', 
    534                       'Ὓ' => 'Y', 
    535                       'Ὕ' => 'Y', 
    536                       'Ὗ' => 'Y', 
    537                       'Ῠ' => 'Y', 
    538                       'Ῡ' => 'Y', 
    539                       'Ὺ' => 'Y', 
    540                       'Ύ' => 'Y', 
    541                       'Φ' => 'F', 
    542                       'Χ' => 'X', 
    543                       'Ψ' => 'PS', 
    544                       'Ω' => 'O', 
    545                       'Ώ' => 'O', 
    546                       'Ὠ' => 'O', 
    547                       'Ὡ' => 'O', 
    548                       'Ὢ' => 'O', 
    549                       'Ὣ' => 'O', 
    550                       'Ὤ' => 'O', 
    551                       'Ὥ' => 'O', 
    552                       'Ὦ' => 'O', 
    553                       'Ὧ' => 'O', 
    554                       'ᾨ' => 'O', 
    555                       'ᾩ' => 'O', 
    556                       'ᾪ' => 'O', 
    557                       'ᾫ' => 'O', 
    558                       'ᾬ' => 'O', 
    559                       'ᾭ' => 'O', 
    560                       'ᾮ' => 'O', 
    561                       'ᾯ' => 'O', 
    562                       'Ὼ' => 'O', 
    563                       'Ώ' => 'O', 
    564                       'ῼ' => 'O', 
    565                       'α' => 'a', 
    566                       'ά' => 'a', 
    567                       'ἀ' => 'a', 
    568                       'ἁ' => 'a', 
    569                       'ἂ' => 'a', 
    570                       'ἃ' => 'a', 
    571                       'ἄ' => 'a', 
    572                       'ἅ' => 'a', 
    573                       'ἆ' => 'a', 
    574                       'ἇ' => 'a', 
    575                       'ᾀ' => 'a', 
    576                       'ᾁ' => 'a', 
    577                       'ᾂ' => 'a', 
    578                       'ᾃ' => 'a', 
    579                       'ᾄ' => 'a', 
    580                       'ᾅ' => 'a', 
    581                       'ᾆ' => 'a', 
    582                       'ᾇ' => 'a', 
    583                       'ὰ' => 'a', 
    584                       'ά' => 'a', 
    585                       'ᾰ' => 'a', 
    586                       'ᾱ' => 'a', 
    587                       'ᾲ' => 'a', 
    588                       'ᾳ' => 'a', 
    589                       'ᾴ' => 'a', 
    590                       'ᾶ' => 'a', 
    591                       'ᾷ' => 'a', 
    592                       'β' => 'b', 
    593                       'γ' => 'g', 
    594                       'δ' => 'd', 
    595                       'ε' => 'e', 
    596                       'έ' => 'e', 
    597                       'ἐ' => 'e', 
    598                       'ἑ' => 'e', 
    599                       'ἒ' => 'e', 
    600                       'ἓ' => 'e', 
    601                       'ἔ' => 'e', 
    602                       'ἕ' => 'e', 
    603                       'ὲ' => 'e', 
    604                       'έ' => 'e', 
    605                       'ζ' => 'z', 
    606                       'η' => 'i', 
    607                       'ή' => 'i', 
    608                       'ἠ' => 'i', 
    609                       'ἡ' => 'i', 
    610                       'ἢ' => 'i', 
    611                       'ἣ' => 'i', 
    612                       'ἤ' => 'i', 
    613                       'ἥ' => 'i', 
    614                       'ἦ' => 'i', 
    615                       'ἧ' => 'i', 
    616                       'ᾐ' => 'i', 
    617                       'ᾑ' => 'i', 
    618                       'ᾒ' => 'i', 
    619                       'ᾓ' => 'i', 
    620                       'ᾔ' => 'i', 
    621                       'ᾕ' => 'i', 
    622                       'ᾖ' => 'i', 
    623                       'ᾗ' => 'i', 
    624                       'ὴ' => 'i', 
    625                       'ή' => 'i', 
    626                       'ῂ' => 'i', 
    627                       'ῃ' => 'i', 
    628                       'ῄ' => 'i', 
    629                       'ῆ' => 'i', 
    630                       'ῇ' => 'i', 
    631                       'θ' => 'th', 
    632                       'ι' => 'i', 
    633                       'ί' => 'i', 
    634                       'ϊ' => 'i', 
    635                       'ΐ' => 'i', 
    636                       'ἰ' => 'i', 
    637                       'ἱ' => 'i', 
    638                       'ἲ' => 'i', 
    639                       'ἳ' => 'i', 
    640                       'ἴ' => 'i', 
    641                       'ἵ' => 'i', 
    642                       'ἶ' => 'i', 
    643                       'ἷ' => 'i', 
    644                       'ὶ' => 'i', 
    645                       'ί' => 'i', 
    646                       'ῐ' => 'i', 
    647                       'ῑ' => 'i', 
    648                       'ῒ' => 'i', 
    649                       'ΐ' => 'i', 
    650                       'ῖ' => 'i', 
    651                       'ῗ' => 'i', 
    652                       'κ' => 'k', 
    653                       'λ' => 'l', 
    654                       'μ' => 'm', 
    655                       'ν' => 'n', 
    656                       'ξ' => 'ks', 
    657                       'ο' => 'o', 
    658                       'ό' => 'o', 
    659                       'ὀ' => 'o', 
    660                       'ὁ' => 'o', 
    661                       'ὂ' => 'o', 
    662                       'ὃ' => 'o', 
    663                       'ὄ' => 'o', 
    664                       'ὅ' => 'o', 
    665                       'ὸ' => 'o', 
    666                       'ό' => 'o', 
    667                       'π' => 'p', 
    668                       'ρ' => 'r', 
    669                       'ῤ' => 'r', 
    670                       'ῥ' => 'r', 
    671                       'σ' => 's', 
    672                       'ς' => 's', 
    673                       'τ' => 't', 
    674                       'υ' => 'y', 
    675                       'ύ' => 'y', 
    676                       'ϋ' => 'y', 
    677                       'ΰ' => 'y', 
    678                       'ὐ' => 'y', 
    679                       'ὑ' => 'y', 
    680                       'ὒ' => 'y', 
    681                       'ὓ' => 'y', 
    682                       'ὔ' => 'y', 
    683                       'ὕ' => 'y', 
    684                       'ὖ' => 'y', 
    685                       'ὗ' => 'y', 
    686                       'ὺ' => 'y', 
    687                       'ύ' => 'y', 
    688                       'ῠ' => 'y', 
    689                       'ῡ' => 'y', 
    690                       'ῢ' => 'y', 
    691                       'ΰ' => 'y', 
    692                       'ῦ' => 'y', 
    693                       'ῧ' => 'y', 
    694                       'φ' => 'f', 
    695                       'χ' => 'x', 
    696                       'ψ' => 'ps', 
    697                       'ω' => 'o', 
    698                       'ώ' => 'o', 
    699                       'ὠ' => 'o', 
    700                       'ὡ' => 'o', 
    701                       'ὢ' => 'o', 
    702                       'ὣ' => 'o', 
    703                       'ὤ' => 'o', 
    704                       'ὥ' => 'o', 
    705                       'ὦ' => 'o', 
    706                       'ὧ' => 'o', 
    707                       'ᾠ' => 'o', 
    708                       'ᾡ' => 'o', 
    709                       'ᾢ' => 'o', 
    710                       'ᾣ' => 'o', 
    711                       'ᾤ' => 'o', 
    712                       'ᾥ' => 'o', 
    713                       'ᾦ' => 'o', 
    714                       'ᾧ' => 'o', 
    715                       'ὼ' => 'o', 
    716                       'ώ' => 'o', 
    717                       'ῲ' => 'o', 
    718                       'ῳ' => 'o', 
    719                       'ῴ' => 'o', 
    720                       'ῶ' => 'o', 
    721                       'ῷ' => 'o', 
    722                       '¨' => '', 
    723                       '΅' => '', 
    724                       '᾿' => '', 
    725                       '῾' => '', 
    726                       '῍' => '', 
    727                       '῝' => '', 
    728                       '῎' => '', 
    729                       '῞' => '', 
    730                       '῏' => '', 
    731                       '῟' => '', 
    732                       '῀' => '', 
    733                       '῁' => '', 
    734                       '΄' => '', 
    735                       '΅' => '', 
    736                       '`' => '', 
    737                       '῭' => '', 
    738                       'ͺ' => '', 
    739                       '᾽' => '', 
    740                       'А' => 'A', 
    741                       'Б' => 'B', 
    742                       'В' => 'V', 
    743                       'Г' => 'G', 
    744                       'Д' => 'D', 
    745                       'Е' => 'E', 
    746                       'Ё' => 'E', 
    747                       'Ж' => 'ZH', 
    748                       'З' => 'Z', 
    749                       'И' => 'I', 
    750                       'Й' => 'I', 
    751                       'К' => 'K', 
    752                       'Л' => 'L', 
    753                       'М' => 'M', 
    754                       'Н' => 'N', 
    755                       'О' => 'O', 
    756                       'П' => 'P', 
    757                       'Р' => 'R', 
    758                       'С' => 'S', 
    759                       'Т' => 'T', 
    760                       'У' => 'U', 
    761                       'Ф' => 'F', 
    762                       'Х' => 'KH', 
    763                       'Ц' => 'TS', 
    764                       'Ч' => 'CH', 
    765                       'Ш' => 'SH', 
    766                       'Щ' => 'SHCH', 
    767                       'Ы' => 'Y', 
    768                       'Э' => 'E', 
    769                       'Ю' => 'YU', 
    770                       'Я' => 'YA', 
    771                       'а' => 'A', 
    772                       'б' => 'B', 
    773                       'в' => 'V', 
    774                       'г' => 'G', 
    775                       'д' => 'D', 
    776                       'е' => 'E', 
    777                       'ё' => 'E', 
    778                       'ж' => 'ZH', 
    779                       'з' => 'Z', 
    780                       'и' => 'I', 
    781                       'й' => 'I', 
    782                       'к' => 'K', 
    783                       'л' => 'L', 
    784                       'м' => 'M', 
    785                       'н' => 'N', 
    786                       'о' => 'O', 
    787                       'п' => 'P', 
    788                       'р' => 'R', 
    789                       'с' => 'S', 
    790                       'т' => 'T', 
    791                       'у' => 'U', 
    792                       'ф' => 'F', 
    793                       'х' => 'KH', 
    794                       'ц' => 'TS', 
    795                       'ч' => 'CH', 
    796                       'ш' => 'SH', 
    797                       'щ' => 'SHCH', 
    798                       'ы' => 'Y', 
    799                       'э' => 'E', 
    800                       'ю' => 'YU', 
    801                       'я' => 'YA', 
    802                       'Ъ' => '', 
    803                       'ъ' => '', 
    804                       'Ь' => '', 
    805                       'ь' => '', 
    806                       'ð' => 'd', 
    807                       'Ð' => 'D', 
    808                       'þ' => 'th', 
    809                       'Þ' => 'TH', 
    810                       'ა' => 'a', 
    811                       'ბ' => 'b', 
    812                       'გ' => 'g', 
    813                       'დ' => 'd', 
    814                       'ე' => 'e', 
    815                       'ვ' => 'v', 
    816                       'ზ' => 'z', 
    817                       'თ' => 't', 
    818                       'ი' => 'i', 
    819                       'კ' => 'k', 
    820                       'ლ' => 'l', 
    821                       'მ' => 'm', 
    822                       'ნ' => 'n', 
    823                       'ო' => 'o', 
    824                       'პ' => 'p', 
    825                       'ჟ' => 'zh', 
    826                       'რ' => 'r', 
    827                       'ს' => 's', 
    828                       'ტ' => 't', 
    829                       'უ' => 'u', 
    830                       'ფ' => 'p', 
    831                       'ქ' => 'k', 
    832                       'ღ' => 'gh', 
    833                       'ყ' => 'q', 
    834                       'შ' => 'sh', 
    835                       'ჩ' => 'ch', 
    836                       'ც' => 'ts', 
    837                       'ძ' => 'dz', 
    838                       'წ' => 'ts', 
    839                       'ჭ' => 'ch', 
    840                       'ხ' => 'kh', 
    841                       'ჯ' => 'j', 
    842                       'ჰ' => 'h'); 
    843          
    844         return strtr($text, $chars); 
     272     * @param string $string  
     273     * @return void 
     274     */ 
     275    public static function unaccent($string) 
     276    { 
     277        if ( ! preg_match('/[\x80-\xff]/', $string) ) { 
     278                return $string; 
     279                } 
     280 
     281        if (self::seemsUtf8($string)) { 
     282                $chars = array( 
     283                // Decompositions for Latin-1 Supplement 
     284                chr(195).chr(128) => 'A', chr(195).chr(129) => 'A', 
     285                chr(195).chr(130) => 'A', chr(195).chr(131) => 'A', 
     286                chr(195).chr(132) => 'A', chr(195).chr(133) => 'A', 
     287                chr(195).chr(135) => 'C', chr(195).chr(136) => 'E', 
     288                chr(195).chr(137) => 'E', chr(195).chr(138) => 'E', 
     289                chr(195).chr(139) => 'E', chr(195).chr(140) => 'I', 
     290                chr(195).chr(141) => 'I', chr(195).chr(142) => 'I', 
     291                chr(195).chr(143) => 'I', chr(195).chr(145) => 'N', 
     292                chr(195).chr(146) => 'O', chr(195).chr(147) => 'O', 
     293                chr(195).chr(148) => 'O', chr(195).chr(149) => 'O', 
     294                chr(195).chr(150) => 'O', chr(195).chr(153) => 'U', 
     295                chr(195).chr(154) => 'U', chr(195).chr(155) => 'U', 
     296                chr(195).chr(156) => 'U', chr(195).chr(157) => 'Y', 
     297                chr(195).chr(159) => 's', chr(195).chr(160) => 'a', 
     298                chr(195).chr(161) => 'a', chr(195).chr(162) => 'a', 
     299                chr(195).chr(163) => 'a', chr(195).chr(164) => 'a', 
     300                chr(195).chr(165) => 'a', chr(195).chr(167) => 'c', 
     301                chr(195).chr(168) => 'e', chr(195).chr(169) => 'e', 
     302                chr(195).chr(170) => 'e', chr(195).chr(171) => 'e', 
     303                chr(195).chr(172) => 'i', chr(195).chr(173) => 'i', 
     304                chr(195).chr(174) => 'i', chr(195).chr(175) => 'i', 
     305                chr(195).chr(177) => 'n', chr(195).chr(178) => 'o', 
     306                chr(195).chr(179) => 'o', chr(195).chr(180) => 'o', 
     307                chr(195).chr(181) => 'o', chr(195).chr(182) => 'o', 
     308                chr(195).chr(182) => 'o', chr(195).chr(185) => 'u', 
     309                chr(195).chr(186) => 'u', chr(195).chr(187) => 'u', 
     310                chr(195).chr(188) => 'u', chr(195).chr(189) => 'y', 
     311                chr(195).chr(191) => 'y', 
     312                // Decompositions for Latin Extended-A 
     313                chr(196).chr(128) => 'A', chr(196).chr(129) => 'a', 
     314                chr(196).chr(130) => 'A', chr(196).chr(131) => 'a', 
     315                chr(196).chr(132) => 'A', chr(196).chr(133) => 'a', 
     316                chr(196).chr(134) => 'C', chr(196).chr(135) => 'c', 
     317                chr(196).chr(136) => 'C', chr(196).chr(137) => 'c', 
     318                chr(196).chr(138) => 'C', chr(196).chr(139) => 'c', 
     319                chr(196).chr(140) => 'C', chr(196).chr(141) => 'c', 
     320                chr(196).chr(142) => 'D', chr(196).chr(143) => 'd', 
     321                chr(196).chr(144) => 'D', chr(196).chr(145) => 'd', 
     322                chr(196).chr(146) => 'E', chr(196).chr(147) => 'e', 
     323                chr(196).chr(148) => 'E', chr(196).chr(149) => 'e', 
     324                chr(196).chr(150) => 'E', chr(196).chr(151) => 'e', 
     325                chr(196).chr(152) => 'E', chr(196).chr(153) => 'e', 
     326                chr(196).chr(154) => 'E', chr(196).chr(155) => 'e', 
     327                chr(196).chr(156) => 'G', chr(196).chr(157) => 'g', 
     328                chr(196).chr(158) => 'G', chr(196).chr(159) => 'g', 
     329                chr(196).chr(160) => 'G', chr(196).chr(161) => 'g', 
     330                chr(196).chr(162) => 'G', chr(196).chr(163) => 'g', 
     331                chr(196).chr(164) => 'H', chr(196).chr(165) => 'h', 
     332                chr(196).chr(166) => 'H', chr(196).chr(167) => 'h', 
     333                chr(196).chr(168) => 'I', chr(196).chr(169) => 'i', 
     334                chr(196).chr(170) => 'I', chr(196).chr(171) => 'i', 
     335                chr(196).chr(172) => 'I', chr(196).chr(173) => 'i', 
     336                chr(196).chr(174) => 'I', chr(196).chr(175) => 'i', 
     337                chr(196).chr(176) => 'I', chr(196).chr(177) => 'i', 
     338                chr(196).chr(178) => 'IJ',chr(196).chr(179) => 'ij', 
     339                chr(196).chr(180) => 'J', chr(196).chr(181) => 'j', 
     340                chr(196).chr(182) => 'K', chr(196).chr(183) => 'k', 
     341                chr(196).chr(184) => 'k', chr(196).chr(185) => 'L', 
     342                chr(196).chr(186) => 'l', chr(196).chr(187) => 'L', 
     343                chr(196).chr(188) => 'l', chr(196).chr(189) => 'L', 
     344                chr(196).chr(190) => 'l', chr(196).chr(191) => 'L', 
     345                chr(197).chr(128) => 'l', chr(197).chr(129) => 'L', 
     346                chr(197).chr(130) => 'l', chr(197).chr(131) => 'N', 
     347                chr(197).chr(132) => 'n', chr(197).chr(133) => 'N', 
     348                chr(197).chr(134) => 'n', chr(197).chr(135) => 'N', 
     349                chr(197).chr(136) => 'n', chr(197).chr(137) => 'N', 
     350                chr(197).chr(138) => 'n', chr(197).chr(139) => 'N', 
     351                chr(197).chr(140) => 'O', chr(197).chr(141) => 'o', 
     352                chr(197).chr(142) => 'O', chr(197).chr(143) => 'o', 
     353                chr(197).chr(144) => 'O', chr(197).chr(145) => 'o', 
     354                chr(197).chr(146) => 'OE',chr(197).chr(147) => 'oe', 
     355                chr(197).chr(148) => 'R', chr(197).chr(149) => 'r', 
     356                chr(197).chr(150) => 'R', chr(197).chr(151) => 'r', 
     357                chr(197).chr(152) => 'R', chr(197).chr(153) => 'r', 
     358                chr(197).chr(154) => 'S', chr(197).chr(155) => 's', 
     359                chr(197).chr(156) => 'S', chr(197).chr(157) => 's', 
     360                chr(197).chr(158) => 'S', chr(197).chr(159) => 's', 
     361                chr(197).chr(160) => 'S', chr(197).chr(161) => 's', 
     362                chr(197).chr(162) => 'T', chr(197).chr(163) => 't', 
     363                chr(197).chr(164) => 'T', chr(197).chr(165) => 't', 
     364                chr(197).chr(166) => 'T', chr(197).chr(167) => 't', 
     365                chr(197).chr(168) => 'U', chr(197).chr(169) => 'u', 
     366                chr(197).chr(170) => 'U', chr(197).chr(171) => 'u', 
     367                chr(197).chr(172) => 'U', chr(197).chr(173) => 'u', 
     368                chr(197).chr(174) => 'U', chr(197).chr(175) => 'u', 
     369                chr(197).chr(176) => 'U', chr(197).chr(177) => 'u', 
     370                chr(197).chr(178) => 'U', chr(197).chr(179) => 'u', 
     371                chr(197).chr(180) => 'W', chr(197).chr(181) => 'w', 
     372                chr(197).chr(182) => 'Y', chr(197).chr(183) => 'y', 
     373                chr(197).chr(184) => 'Y', chr(197).chr(185) => 'Z', 
     374                chr(197).chr(186) => 'z', chr(197).chr(187) => 'Z', 
     375                chr(197).chr(188) => 'z', chr(197).chr(189) => 'Z', 
     376                chr(197).chr(190) => 'z', chr(197).chr(191) => 's', 
     377                // Euro Sign 
     378                chr(226).chr(130).chr(172) => 'E', 
     379                // GBP (Pound) Sign 
     380                chr(194).chr(163) => ''); 
     381 
     382                $string = strtr($string, $chars); 
     383        } else { 
     384                // Assume ISO-8859-1 if not UTF-8 
     385                $chars['in'] = chr(128).chr(131).chr(138).chr(142).chr(154).chr(158) 
     386                        .chr(159).chr(162).chr(165).chr(181).chr(192).chr(193).chr(194) 
     387                        .chr(195).chr(196).chr(197).chr(199).chr(200).chr(201).chr(202) 
     388                        .chr(203).chr(204).chr(205).chr(206).chr(207).chr(209).chr(210) 
     389                        .chr(211).chr(212).chr(213).chr(214).chr(216).chr(217).chr(218) 
     390                        .chr(219).chr(220).chr(221).chr(224).chr(225).chr(226).chr(227) 
     391                        .chr(228).chr(229).chr(231).chr(232).chr(233).chr(234).chr(235) 
     392                        .chr(236).chr(237).chr(238).chr(239).chr(241).chr(242).chr(243) 
     393                        .chr(244).chr(245).chr(246).chr(248).chr(249).chr(250).chr(251) 
     394                        .chr(252).chr(253).chr(255); 
     395 
     396                $chars['out'] = "EfSZszYcYuAAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy"; 
     397 
     398                $string = strtr($string, $chars['in'], $chars['out']); 
     399                $doubleChars['in'] = array(chr(140), chr(156), chr(198), chr(208), chr(222), chr(223), chr(230), chr(240), chr(254)); 
     400                $doubleChars['out'] = array('OE', 'oe', 'AE', 'DH', 'TH', 'ss', 'ae', 'dh', 'th'); 
     401                $string = str_replace($doubleChars['in'], $doubleChars['out'], $string); 
     402        } 
     403 
     404        return $string; 
    845405    } 
    846406