我在PHP中配置了mbstring.func_overload = 7
,因此所有单字节字符串函数都映射到它们的多字节等价物。但有时我仍然需要将字符串视为字节数组;例如,在计算其大小或进行加密时。
这里最好的方法是什么?我可以只使用多字节函数并将它们传递给单字节编码,即使这实际上不是字符串的编码方式吗?例如:
mb_substr($utf8str, 0, 1, "latin1");
mb_strlen($utf8str, "latin1");
编辑:我注意到在查看PHP的来源时,他们将原始函数重命名为mb_orig_X,就像在mb_orig_strlen中一样。可能不安全使用,因为它们没有记录,但很有趣。
答案 0 :(得分:1)
我认为如果你需要使用原始函数,你不应该重写这些函数(即,如果你真的需要使用二进制字符串),这是一个非常肮脏的解决方案。这迫使你为之前做出的选择做出更加肮脏的解决方法。它可能会破坏你正在使用的库,而你却没有意识到这一点(但PHP团队不断发明越来越多的愚蠢功能)。
但如果你必须保持这种方式,你应该:
ASCII
类似的语言encoding(不适用于口译员,但适用于那些阅读代码的人 - 即使是2年后的那些人。)和