我在当前的项目中遇到了问题,我需要一些帮助:
- 函数
strtoupper()
、mb_strtoupper()
等不工作 - 我需要设置正确的区域设置以使它们正常工作
- 为此,我需要知道PHP上的操作系统正在运行,因为对于Windows,正确的命令是
setlocale(LC_ALL, "rus");
或setlocale(LC_ALL, "Russian_Russia.1251");
,而对于其他命令(我不知道是否适用于所有其他命令)是setlocale(LC_ALL, 'ru_RU');
但我发现的所有OS检测方法都使用strupper()
/strtolower()
来检测OS。。。所以现在我有些困惑。我该怎么办。如何检测操作系统。。。
顺便说一句,性能是至关重要的,如果有人知道检测操作系统或设置正确区域设置的好而快速的方法,那就太棒了!
setlocale
支持传递多个语言环境,它将选择第一个可用的语言环境。因此:
setlocale(LC_ALL, 'rus', 'Russian_Russia.1251', 'ru_RU');
这可以跨平台工作。
PHP_OS
常数是你要找的-文档
但是,你实际上是用什么方法审视自己的,它们出了什么问题?
phpinfo()
是我们要走的路。它给了你所需要的一切。
这不是你的方式。一切都很简单:
setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
// ru_RU.CP1251 for FreeBSD
// rus_RUS.CP1251 for Linux
// Russian_Russia.1251 for Windows