2011-05-11 12 views
24

strtoupper()PHP関数のユーザーコメントを読んできましたが、非Enligish文字列の変換方法についてはコンセンサスがないようです。私は人がローカライズされたソリューションやものを提供していることを意味しますが、文字列をすべての上(または下の)すべての大文字に変換する統一された方法はありませんか?strtoupper UTF-8文字列のPHP関数

私の質問は、UTF-8でエンコードされた文字列(不明なロケールで)があれば、どのようにPHPのすべての上/下の文字に変換するのですか?

答えて

48

mb_strtoupperを使用します。

$str = "Τάχιστη αλώπηξ βαφής ψημένη γη, δρασκελίζει υπέρ νωθρού κυνός"; 
$str = mb_strtoupper($str, "UTF-8"); 
echo $str; // Prints ΤΆΧΙΣΤΗ ΑΛΏΠΗΞ ΒΑΦΉΣ ΨΗΜΈΝΗ ΓΗ, ΔΡΑΣΚΕΛΊΖΕΙ ΥΠΈΡ ΝΩΘΡΟΎ ΚΥΝΌΣ 

PHP.net状態:

標準の場合、このようなstrtolowerとして 折り畳み機能() とstrtoupper()とは対照的に、ケースフォールディングは、Unicode 文字特性に基づいて行わ あります。したがって、この関数の の動作は ではなく、 Aウムラウト(Ä)のように、 の「アルファベット」プロパティを持つ文字を に変換することができます。

0

thisを試しましたか?私は言語学者ではありませんが、すべての言語の大文字/小文字の区別はしません。

+1

少なくともません。例えば ​​'ß'は大文字ではありません:) – KingCrunch

+0

すべての言語ですか?中国語やアラビア語はどうですか?アラビア語では、各文字の3つのバージョンがあります。すべての文字が3つのグループすべてに対応するバージョンではありません。ギリシャ語では、頭文字(大文字でもあります)の普通と最終バージョンの文字が1つあります。 – rsk82

+0

@ rsk82 - *そうは思いません。 – arviman

1

使用mb_strtoupper($text)代わり strtoupper($text)の:)すべての文字に

+1

この回答とはどのように違いますか? http://stackoverflow.com/a/5969837/670017 – ahmd0