【问题标题】:Exploding a string at 2 newlines as oppose to just 1在 2 个换行符处爆炸一个字符串,而不是 1 个
【发布时间】:2015-11-19 21:26:35
【问题描述】:

我正在尝试分解具有超过 1 个换行符的字符串。更具体地说,2个换行符,我不知道该怎么做。例如:

$text = "
text1

text2

text3
";

$text = explode(PHP_EOL, $text);

在此之后数组中会有一些空索引。我需要在 2 个换行符而不是 1 个换行符处爆炸。我该怎么做?

【问题讨论】:

标签: php arrays string explode


【解决方案1】:

如果您确定换行符是如何形成的(它们可能包含 \n 和/或 \r),您可以这样做:

$Array = explode("\n\n", $text);

您还可以修剪字符串,以删除开头和结尾的换行符:

$Array = explode("\n\n", trim($text));

【讨论】:

  • "\n" 并不总是合适的——无论是在使用 Windows 编辑器(带有操作系统设置)生成的文件中,还是来自 HTML 表单字段时。我建议在这种情况下使用 preg_split 并接受 "\r?\n" 作为换行模式以更适应("\n\r" 和 "\r" 形式已经过时了)。
  • @user2864740,我添加了关于换行变化的提醒,谢谢。
【解决方案2】:

这应该适合你:

只需使用preg_split() 和标志:PREG_SPLIT_NO_EMPTY 设置并用常量PHP_EOL 分解字符串,例如

$arr = preg_split("/". PHP_EOL . "/", $text, -1, PREG_SPLIT_NO_EMPTY);
print_r($arr);

输出:

Array ( [0] => text1 [1] => text2 [2] => text3 )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2019-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多