【问题标题】:explode string at "newline,space,newline,space" in PHP在 PHP 中的“换行符,空格,换行符,空格”处爆炸字符串
【发布时间】:2019-11-01 19:32:32
【问题描述】:

这是我要爆炸的字符串。这个字符串是段落的一部分,我需要在每个“换行符,空格,换行符,空格”处拆分:

s

 1

来自 textmagic.com 的结果显示它包含一个 \n,然后是一个空格,然后是一个 \n,然后是一个空格。

这是我尝试过的:

$values = explode("\n\s\n\s",$string); // 1
$values = explode("\n \n ",$string);   // 2
$values = explode("\n\r\n\r",$string); // 3

期望的输出:

Array (
    [0] => s
    [1] => 1
)

但他们都没有工作。这里有什么问题? 我该怎么做?

【问题讨论】:

  • 这里想要的输出是什么?
  • 我已在问题中添加了所需的输出。顺便说一句,我恢复了您所做的一些编辑,因为它改变了字符串中的空格和换行符。
  • 我的猜测是您正在处理 Windows 换行符,因此正确的字符串将变为 \n\r \n\r ,但我尚未对其进行测试,因为我正在从手机上输入此评论
  • 您认为它在 textmagic 输出中的确切位置是 \n?传说中明确表示黄色符号被计为 两个 字符,因此这更可能确实是 \r\n。另外,如果您不确定您的数据实际包含什么,使用 urlencode 是一种快速查看那些“不可见”字节序列的方法。
  • 您对“换行符”字符的解释可能存在问题,它的表示取决于操作系统和字符集编码。所以“\n”可能与二进制数据的“换行符”不匹配。见en.wikipedia.org/wiki/Newline。 TextMagic 的屏幕截图显示数据中的换行符占用 2 个字节,这应该为您指明正确的方向。

标签: php string explode


【解决方案1】:

只需将explode()PHP_EOL." ".PHP_EOL." " 一起使用,其格式为“换行符、空格、换行符、空格”。使用PHP_EOL,您可以获得适合您系统的正确换行符格式。

$split = explode(PHP_EOL." ".PHP_EOL." ", $string);
print_r($split);

https://3v4l.org/WpYrJ 现场演示

【讨论】:

    【解决方案2】:

    PHP中使用preg_split()通过多个分隔符来explode()

    这里只是一个简短的说明。要在 PHP 中使用多个分隔符来爆炸()字符串,您必须使用正则表达式。使用竖线字符分隔分隔符。

    $string = "\n\ranystring"
    $chunks = preg_split('/(de1|del2|del3)/',$string,-1, PREG_SPLIT_NO_EMPTY);
    
    // Print_r to check response output.
    echo '<pre>';
    print_r($chunks);
    echo '</pre>';
    

    PREG_SPLIT_NO_EMPTY – 只返回非空件。

    【讨论】:

      猜你喜欢
      • 2013-07-28
      • 2018-06-14
      • 2015-08-03
      • 2013-05-26
      • 2011-07-20
      • 1970-01-01
      • 2014-07-30
      • 2013-09-09
      • 2011-06-03
      相关资源
      最近更新 更多