几年前,我建立了一个很好的自定义 PHP CMS 站点,但我忽略了一个重要问题:unicode 支持。这主要是因为当时的用户都是说英语的,而且在可预见的未来仍然如此。另一个因素是 PHP 一开始就对 unicode 的支持很差。
好吧,现在算账的日子到了。我希望支持 unicode,特别是 UTF8,但我有一个主要障碍:PHP 的字符串函数。如果我错了,请纠正我,但即使是现在,在 PHP 5.5 的世界中,PHP 的常规字符串函数(即 strlen、substr、str_replace、strpos 等)并不完全支持 unicode。另一方面,PHP 的 mb_string 函数确实支持 unicode,但我读到它们可能会占用大量资源(这是有道理的,因为我们将处理多字节字符而不是单字节字符)。
所以,在我看来,有三种解决方案:
1) 在所有情况下都使用多字节字符串函数。
A. 尝试用它们的多字节对应物覆盖标准字符串函数。说到这,如果我这样做,最好的方法是什么?
B. 煞费苦心地检查我的所有代码,并将标准字符串函数替换为对应的多字节函数。
2) 煞费苦心地检查我的所有代码,并将与用户输入、数据库数据等一起使用的标准字符串函数替换为对应的多字节函数。这将要求我仔细查看代码中每个字符串函数的每次用法,以确定它是否有可能处理多字节字符。
这样做的好处是我将拥有最佳的运行时间,同时完全支持 unicode。这里的缺点是,这将非常耗时(而且我可能会补充说非常无聊),并且总是有机会在我应该使用多字节字符串函数的地方错过。
3)彻底检查我的软件并从头开始。但这是我试图避免的事情。
如果有其他可用的选项,请告诉我。