用某种空格分割字符串

时间:2017-10-26 11:27:08

标签: php

我已获得以下代码:

$output2 = 'text

more text

ja';
$explode = explode('

', $output);

这很好用,$explode数组打印如下:

Array
(
    [0] => text
    [1] => meer text
    [2] => ja
)

但是,以下代码无效,我不知道如何修复它:

$output = 'text



more text



ja';

$explode = explode('

', $output);

$explode数组打印以下内容:

Array
(
    [0] => text
    

    
  //more text
    

    
ja
)

这似乎是一个奇怪的问题。但第一个例子是我手工制作的测试。但第二个例子是从数据库实际返回的内容。

5 个答案:

答案 0 :(得分:1)

您可以使用preg_split拆分字符串:

<?php
$output = 'text
&NewLine;
&NewLine;more text
&NewLine;
&NewLine;ja';

$explode = preg_split('/(&NewLine;|(\r\n|\r|\n))+/', $output, -1, PREG_SPLIT_NO_EMPTY);
  

演示: https://ideone.com/KU0v9t ideone )或https://eval.in/887393 eval.in

以下解决方案要拆分双&NewLine;

$output = 'text
&NewLine;
&NewLine;more text
&NewLine;
&NewLine;ja
&NewLine;nein';

$explode = preg_split('/(\r\n|\r|\n)*(&NewLine;(\r\n|\r|\n)*){2}/', $output, -1, PREG_SPLIT_NO_EMPTY);
  

演示: https://ideone.com/0txh5O

答案 1 :(得分:0)

在代码$output =str_replace("\r\n","",$output );中添加一行,将所有字符串组合在一行中,以便它是您想要的第一个示例。

$output =str_replace("\r\n","",$output );
$explode = explode('&NewLine;&NewLine;', $output);
print_r($explode);

现场演示:https://eval.in/887371

答案 2 :(得分:0)

$explode = preg_split('/&NewLine;\s*&NewLine;/', $output);

答案 3 :(得分:0)

通过删除所有新行来标准化字符串:

Dim str As String = String.Join( _
    Environment.NewLine, _
    dt.Rows.Cast(Of DataRow)().Select( _
    Function(r) String.Join( _
        ",", _
        r.ItemArray().Select(Function(o, i) If(i = 1, Format(o, "yyyy-MM-dd"), o.ToString())).ToArray() _
        ) _
    ).ToArray() _
)
Console.WriteLine(str)

然后爆炸它。

答案 4 :(得分:0)

正如User2486所说,问题在于你有一些隐藏的角色你没有看到像\ n和\ r

在你的第一个例子中,你有

'text&NewLine;&NewLine;more text&NewLine;&NewLine;ja'

并在第二个

'text\r\n&NewLine;\r\n&NewLine;more text\r\n&NewLine;\r\n&NewLine;ja'