字符串函数在PHP中是ASCII安全的吗?

| 一些PHP字符串函数(例如strtoupper等)是与语言环境相关的。但是,当我真的知道特定字符串仅由ASCII(0-127)字符组成时,尚不清楚语言环境是否重要。我可以保证
strtoupper(\'abc..xyz\')
总是返回
ABC..XYZ
而不取决于语言环境。 PHP字符串函数在ASCII范围内独立于语言环境是否工作相同? 尽管关于
strtoupper
的答案对我很重要,但有关所有字符串函数库的问题更笼统。 我想确保用户选择的语言环境(在多语言站点上)不会破坏我的核心功能,而这与国际化无关。     
已邀请:
           PHP字符串函数在独立于区域设置的ASCII范围内是否起作用? 不,恐怕不是。主要的反例是可怕的土耳其点缀-I:
setlocale(LC_CTYPE, \"tr_TR\");
echo strtoupper(\'hi!\');

-> \'H\\xDD!\' (\'Hİ!\' in ISO-8859-9)
在最坏的情况下,您可能必须提供自己的与语言环境无关的字符串处理。调用
setlocale
恢复为
C
或其他某种语言环境是一种解决方法,但是POSIX进程级语言环境模型确实不适用于现代客户端/服务器应用程序。     
        PHP字符串函数将一个字节视为一个字符。在ASCII范围
0-127
中就可以了。 要使用UTF-8安全处理多种语言,请使用
mb_*()
函数,UTF-8库或直到PHP6发行到2030年。     

要回复问题请先登录注册