我有一些用于文本过滤的 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 设置不会重载多字节字符串函数。
任何人都可以发表评论吗?谢谢。