一些 PHP string functions (如 strtoupper 等)依赖于语言环境。但是当我确实知道特定字符串仅由 ASCII (0-127) 字符组成时,仍然不清楚语言环境是否重要。我可以保证 strtoupper('abc..xyz')
将始终独立于区域设置返回 ABC..XYZ
吗?做 PHP string functions在独立于区域设置的 ASCII 范围内工作相同?
虽然关于 strtoupper
的答案对我来说很重要,但这个问题对于所有字符串函数库来说更为笼统。
我想确保用户选择的语言环境(在多语言网站上)不会破坏我的与国际化无关的核心功能。
最佳答案
Do PHP string functions work the same in ASCII range independent from locale?
不,恐怕不是。主要的反例是可怕的土耳其语 dotted-I :
setlocale(LC_CTYPE, "tr_TR");
echo strtoupper('hi!');
-> 'H\xDD!' ('Hİ!' in ISO-8859-9)
在最坏的情况下,您可能必须提供自己的独立于语言环境的字符串处理。调用 setlocale
恢复到 C
或其他一些语言环境是一种修复,但 POSIX 进程级语言环境模型非常不适合现代客户端/服务器应用程序.
关于php - 字符串函数在 PHP 中是 ASCII 安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6181807/