gpt4 book ai didi

php - 使 PHP 脚本完全 Unicode 友好的声明

转载 作者:可可西里 更新时间:2023-10-31 22:47:13 25 4
gpt4 key购买 nike

记住在 PHP 中完成您需要做的所有事情以使其与 Unicode 一起正常工作太棘手、乏味且容易出错,所以我正在寻找让 PHP 神奇地绝对升级的技巧从发霉的老式 ASCII 字节模式现代 Unicode 字符模式,所有可能的一切都可以一次完成,只需使用一个简单的声明。

这个想法是使 PHP 脚本现代化以使用 Unicode,而不必用一堆令人困惑的备用函数调用和特殊正则表达式来弄乱源代码。一切都应该使用 Unicode “做正确的事”,不问任何问题。

鉴于目标是以最少的麻烦实现最大的 Unicodeness,此声明必须至少做这些事情(加上我忘记的任何其他可以促进总体目标的事情) :

  • PHP 脚本源本身被认为是 UTF‑8 格式(例如,字符串和正则表达式)。

  • 所有输入和输出都会根据需要自动转换为 UTF‑8 或从 UTF‑8 自动转换,并带有规范化选项(例如,所有输入规范化为 NFD,所有输出规范化为 NFC)。

  • 所有具有 Unicode 版本的函数都使用它们(例如,Collat​​or::sort 用于 sort)。

  • 所有字节函数(例如,strlenstrstrstrpossubstr)都可以工作像相应的字符函数(例如,mb_strlenmb_strstrmb_strposmb_substr)。

  • 所有正则表达式和正则表达式函数都透明地在 Unicode 上工作(即,就像所有的预编译器都隐式添加了 /u 一样,\w\b\s 都适用于 Unicode the way The Unicode Standard requires them to work 等)。

为了额外的功劳 :),我希望有一种方法可以将此声明“升级”到完整字素模式。这样字节或字符函数就变成了字素函数(例如,grapheme_strlengrapheme_strstrgrapheme_strposgrapheme_substr),并且正则表达式适用于适当的字素(即 . — 甚至 [^abc] — 匹配一个 Unicode 字素簇,无论它包含多少代码点等)。

最佳答案

full-unicode 正是 PHP 6 的想法——它在一年多前被取消。 p>

所以,不,没有办法获得所有这些——除非使用正确的函数,并记住字符与字节不同。


不过,可能对你第四点有帮助的一件事是 Function Overloading Featurembstring 扩展 (引用) :

mbstring supports a 'function overloading' feature which enables you to add multibyte awareness to such an application without code modification by overloading multibyte counterparts on the standard string functions.
For example, mb_substr() is called instead of substr() if function overloading is enabled.

关于php - 使 PHP 脚本完全 Unicode 友好的声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5765093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com