php - 您如何缩小现代 PHP 中的语言环境/代码页上下文?
问题描述
我有php_mod
7.2.31 在 LightSpeed 下运行,环境语言环境是 UTF8。然而,我非常小的测试项目只需要处理 ASCII 数据,因为 env. 语言环境是 UTF8,ctype_alnum()
现在检查偏斜。我可以通过调用来解决它setlocale()
,但是,根据文档setlocale()
在线程环境中是不安全的:
警告语言环境信息是按进程维护的,而不是按线程维护的。如果您在 Windows 上的 IIS、HHVM 或 Apache 等多线程服务器 API 上运行 PHP,您可能会在脚本运行时遇到语言环境设置的突然变化,尽管脚本本身从未调用 setlocale()。这是由于其他脚本同时在同一进程的不同线程中运行,使用 setlocale() 更改了进程范围的语言环境。
我想这是有道理的。托管由我的提供商管理,所以我不知道有关它的所有详细信息,但为了安全起见,我假设它是多线程的。人们如何处理此类案件?到目前为止我的猜测:
- 放弃并以 UTF/多字节处理所有内容
- 使用 preg_match() (与所有其他语言中的任何正则表达式匹配一样,我认为它总是比本机字符串/字符工具慢)
- 使用一些聪明的机制来管理语言环境/字符集?
解决方案
推荐阅读
- asp.net-core - 我想在详细信息页面中而不是在 AspNetCore Web 应用程序的索引页面中构建列
- javascript - 如何包含第三方 javascript
- sql-server - xp_dirtree 从一张表的一个文件夹中加载所有 csv 文件
- html - 如果 Delphi 不能提供汇编,如何为 Delphi 构建 Sandcastle Microsoft Help 2.0 文档?
- visual-studio-code - VSCode 上的 Hyperledger Fabric,出现错误:实例化智能合约时出错:链码注册失败:容器以 1 退出
- r - 使用 ggplot2 而不是 70 条绘制 10 个最高条
- visual-studio - 矩阵产品的 Fortran mex 文件:从不可分配到可分配
- python - ModuleNotFoundError: No module named ... 仅适用于某些包
- python - 如何在熊猫中对字符串中的数字进行排序?
- spring-boot - 我的 JEE 代码不处理“if”块,即使它是真的