UTF-8 PHP替换不可打印的字符"空格"具有不可打印的字符"换行符"

时间:2015-07-29 09:18:03

标签: php utf-8 preg-replace non-printable

我在UTF-8中有non-printable space的字符串,我需要将其替换为non-printable linebreak

类似str_replace('&nbsp;','<br />',$string);,但non-printable characters

2 个答案:

答案 0 :(得分:3)

如果您在引号之间键入特定字符,它确实有效:

str_replace(' ', '', $string)
             ^   ^^
        put characters here

由于这可能有点难以键入和/或使源代码不那么明显,因此您可以用字节表示法编写这些字符串文字。只要弄清楚你正在谈论的具体角色以及它编码的字节数:

str_replace("\xE2\x80\xAF", "\x0A", $string)

这正在用常规换行符(E2 80 AF)替换ZERO-WIDTH SPACE(UTF-8编码0A)。在您选择的Unicode表中查找。可能使用echo bin2hex($string)检查现有字符串,以确定它包含的字节数。

答案 1 :(得分:0)

如何:str_replace('&nbsp;' , PHP_EOL , $string);

甚至更好:str_replace( array( '&nbsp;', ' ' ) , PHP_EOL , $string);