【问题标题】:Print special characters like \s or \n as '\s' or '\n'将 \s 或 \n 等特殊字符打印为 '\s' 或 '\n'
【发布时间】:2016-08-29 11:40:56
【问题描述】:

我有一串带有空格和换行符的文本。有时标签。例如

$text = 'Hello I am    chunk  of text
        A new line follows';

然后我用 preg_match 做一些匹配。

例如:

preg_match('/Hello I am\s*/',$a,$b);

但在我这样做之前,我想看看这个 $text 字符串中到底有什么样的间距,所以我想看看正则表达式看到了什么,否则我正在做一些试验和错误。我真正的 $text 字符串实际上要复杂得多,有时会有制表符换行符,我怀疑某种我不知道的分离。所以我想看看正则表达式看到了什么,例如:

Hello\sI\am\tchunk\s\sof\stext\nA\snew\sline\sfollows

它不翻译空格、制表符和换行符,而是打印它们的内容。这是怎么做到的?我想看看当我通过这个 $text 字符串进入 preg_match 时 php 看到了什么。谢谢

【问题讨论】:

  • 为什么是\s\s 表示任何空格。
  • 使用addcslashes 转义换行符。或者 strtr 也可以替换空格。
  • 无论您做什么,都不会从该字符串中获得换行符,因为它不包含任何内容。您刚刚连接了两个字符串。 $text 包含“单词”textA
  • 另外,amchunk 之间的文本是 4 个空格,而不是制表符。
  • 谢谢,我已经添加了换行符 :)

标签: php regex


【解决方案1】:

您可以使用json_encode()查看换行符(可能还有其他字符)

$string = 'something
            something';

echo json_encode($string);

// outputs something \nsomething

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多