32

我一直在阅读用户对 strtoupper() PHP 函数的评论,但对于如何转换非英语字符串似乎并没有达成共识。我的意思是人们提供本地化的解决方案和东西,但不应该有一种统一的方法将字符串转换为所有大写(或所有小写)字母吗?

所以我的问题是,比如说,如果我有一个 UTF-8 编码的字符串(在某些未知的语言环境中),我如何将它转换为 PHP 中的所有大写/小写字母?

4

2 回答 2

67

你想用mb_strtoupper.

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

PHP.net状态:

与 strtolower() 和 strtoupper() 等标准大小写折叠函数相比,大小写折叠是基于 Unicode 字符属性执行的。因此,此函数的行为不受语言环境设置的影响,它可以转换任何具有“字母”属性的字符,例如 A-umlaut (Ä)。

于 2011-05-11T19:53:59.893 回答
0

你试过这个吗?我不是语言学家,但我不会假设所有语言都有小写/大写拆分。

于 2011-05-11T19:57:10.593 回答