【问题标题】:preg_replace removes also line breaks when only spaces are asked to be removed当只要求删除空格时,preg_replace 也会删除换行符
【发布时间】:2016-10-24 14:48:59
【问题描述】:

当我尝试使用此代码从字符串中删除多个空格时

preg_replace('/\s{2,}/', ' ', $data)
我注意到换行符也被删除了。

当我在语法中使用空格字符而不是 \s 时,一切正常。

所以我想知道为什么我们会有这种行为以及发生了什么?

【问题讨论】:

  • 搜索\s 的确切含义。尝试改用\h
  • \s 通常是空格、制表符和换行符,所以这是正确的结果
  • 我从没想过换行符被认为是空白字符。无论如何,这就是答案

标签: php regex preg-replace line-breaks


【解决方案1】:

\s 匹配空白字符。来自PCRE

默认的 \s 字符为 HT (9), LF (10), VT (11), FF (12), CR (13) 和空格 (32),在“C”中定义为空白 语言环境。

强调我的。

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多