【问题标题】:UTF-8 PHP replace non printable character "space" with non printable character "line break"UTF-8 PHP 用不可打印字符“换行符”替换不可打印字符“空格”
【发布时间】:2015-07-29 09:18:03
【问题描述】:

我在UTF-8 中有一个带有non-printable space 的字符串,我需要用non-printable linebreak 替换它

类似str_replace(' ','<br />',$string); 但带有non-printable characters。

【问题讨论】:

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


【解决方案1】:

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

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

由于这可能有点难以键入和/或使源代码不那么明显,因此您可以用它们的字节表示法编写这些字符串文字。只要弄清楚你在说什么特定的字符以及它编码的字节:

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

这是用常规换行符 (0A) 替换零宽度空格(UTF-8 编码 E2 80 AF)。在您选择的 Unicode 表中查找它。可能使用echo bin2hex($string) 检查您现有的字符串,以确定它包含哪些字节。

【讨论】:

  • 第一个 sn-p 像魅力一样对我有用 :),我刚刚在 $replace 参数中添加了一个带有 enter keyobard 的换行符,它就起作用了。谢谢。
  • 对于那些在 preg_replace 不应该捡起它时遇到麻烦的人来说,这就像一个魅力!我刚刚在我的情况下添加了不可见空间 e2 80 8b 的十六进制编辑器值,它确实有效。在很多事情都失败之后,这是第一个直接为我工作的解决方案
【解决方案2】:

怎么样:str_replace(' ' , PHP_EOL , $string);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2021-08-04
    • 2022-01-13
    • 2012-07-20
    • 1970-01-01
    • 2021-12-30
    • 2017-11-10
    相关资源
    最近更新 更多