首页 > 解决方案 > 您如何缩小现代 PHP 中的语言环境/代码页上下文?

问题描述

我有php_mod7.2.31 在 LightSpeed 下运行,环境语言环境是 UTF8。然而,我非常小的测试项目只需要处理 ASCII 数据,因为 env. 语言环境是 UTF8,ctype_alnum()现在检查偏斜。我可以通过调用来解决它setlocale(),但是,根据文档setlocale()在线程环境中是不安全的:

警告语言环境信息是按进程维护的,而不是按线程维护的。如果您在 Windows 上的 IIS、HHVM 或 Apache 等多线程服务器 API 上运行 PHP,您可能会在脚本运行时遇到语言环境设置的突然变化,尽管脚本本身从未调用 setlocale()。这是由于其他脚本同时在同一进程的不同线程中运行,使用 setlocale() 更改了进程范围的语言环境。

我想这是有道理的。托管由我的提供商管理,所以我不知道有关它的所有详细信息,但为了安全起见,我假设它是多线程的。人们如何处理此类案件?到目前为止我的猜测:

  1. 放弃并以 UTF/多字节处理所有内容
  2. 使用 preg_match() (与所有其他语言中的任何正则表达式匹配一样,我认为它总是比本机字符串/字符工具慢)
  3. 使用一些聪明的机制来管理语言环境/字符集?

标签: phplocalesetlocale

解决方案


推荐阅读