【发布时间】:2012-09-15 08:40:28
【问题描述】:
我有一些用于文本过滤的 PHP 代码。在过滤过程中,一些 ASCII 字符(例如与号 (&) 和波浪号 (~))会临时转换为低位 ASCII 字符(例如十进制代码点 4 和 5)。就在生成最终过滤输出之前,转换被还原。
$temp = str_replace(array('&', '~'), array("\x04", "\x05"), $input);
... some filtering code to work with $temp ...
$out = str_replace(array("\x04", "\x05"), array('&', '~'), $temp);
这适用于使用 8 位代码单元(例如 UTF-8 和 ISO 8859-1)的字符编码的输入文本。但我不确定以更大的代码单元编码的输入,例如 UTF-16 或 UTF-32。第一个转换步骤会破坏输入文本的格式吗?由于输入的某些预先存在的字符,在还原步骤期间是否会出现一些冲突? PHP 设置没有overload 多字节字符串函数。
有人可以评论吗?谢谢。
【问题讨论】:
标签: php character-encoding str-replace utf-16 well-formed