【问题标题】:Can't remove weird return character / line ending in PHP [duplicate]无法删除以 PHP 结尾的奇怪返回字符/行 [重复]
【发布时间】:2019-04-22 07:23:25
【问题描述】:

我有一个 PHP 函数,可以从我的数据生成 XML 文件。其中一些是通过 textarea 字段提交的。

当我创建 XML 文件时,textarea 字段在值末尾显示一个不寻常的回车符。我尝试使用以下方法删除,但都没有任何作用。

trim($value)
str_replace( "\n", "", $value)
str_replace( "\r", "", $value)
str_replace( "\n\r", "", $value)
str_replace( "\r\n", "", $value)
preg_replace('/\s\s+/', ' ', $value)

甚至尝试了 strip_tags($value) 和 html_entity_decode($value) 以防万一我可以去掉它。

确实删除它的一件事是通过正则表达式删除除字母数字字符之外的所有字符,但这没有用,因为我的用户会想要使用很多字符,如破折号、括号、单引号和双引号等。

还有没有其他方法可以去除这种奇怪的字符?或者我可以通过代码删除的任何其他奇怪的回车?

【问题讨论】:

  • 试试preg_replace('/\R+/', ' ', $value)
  • 不。恐怕还在那里。这是最奇怪的事情!无法弄清楚它会是什么返回字符。不过,感谢您的快速回复。
  • 你能把这个字符粘贴到问题正文吗?
  • 不,我刚试过,内容出现后没有任何返回。无论如何,这里是。奇怪的回报就在“内容”之后。 测试内容。 测试内容。
  • 嗨,希望我有。我昨天投了赞成票,但忘了接受。

标签: php regex


【解决方案1】:

你可以使用

$value = preg_replace('/\R+/u', ' ', $value)

这里,\R 匹配任何 Unicode 换行序列。

另外,请参阅/u modifier reference

u (PCRE_UTF8)
此修饰符打开与 Perl 不兼容的 PCRE 的附加功能。模式和主题字符串被视为 UTF-8。

【讨论】:

    【解决方案2】:

    我也遇到过类似的情况。在我的例子中,有一个不间断空格 unicode 字符,看起来像一个空格,但不是。

    你可以做的是遍历字符串中的所有字符,并一个一个地检查它们,看看有什么奇怪的。这可能不会直接解决您的问题,但至少可以帮助您找到我希望的解决方案。

    for( $i = 0; $i < strlen($value); $i++ ) {
        $chr = $value[$i];
        echo "{$i}: [$chr}] [".ord($chr)."];\n";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-06
      • 2018-07-27
      • 2016-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多