PHP:在多字节模式下安全解析ascii字符串


PHP: parsing ascii string safely when running in multibyte mode

在我的PHP配置文件中有

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');

确保UTF8支持。我读到,如果你设置了这些设置,你也应该使用多字节字符串操作函数。我目前正在改变一个库解析excel文件,我需要分割一个属性值的形式N12,以确定电子表格的大小。我知道一个事实,值不能有ascii范围以外的值。我是否需要使用多字节字符串操作函数来解析N12中的12,或者我可以使用正常的。我问,因为我想保持解决方案一般,也许提交解决方案回到图书馆。如果我需要根据当前模式是否为utf8来使用正确的函数,那么检查这一点的最佳方法是什么?

UTF-8是ASCII的纯超集。如果您的函数可以处理UTF-8,那么根据定义,它们也可以处理ASCII。核心PHP字符串函数大多期望单字节编码,但这并不意味着它们不能与其他编码一起工作;.

所以这取决于你到底想做什么。可能核心PHP字符串函数已经工作良好,无论编码。如果它们不这样做,并且您的操作在使用多字节字符串时会中断,那么您可以使用适当的MB函数代替,根据定义,当将输入处理为UTF-8时,它也可以很好地处理ASCII。