如何删除字符串中两行之间的特定换行符而不删除其他换行符?

我有一个像这样的字符串,如果行中的数字与行号不匹配,我想删除行的换行符。这怎么可能 ?


这是我的字符串:


1 //line1

2 //line2

3 //line3

5 //line4

4 //line5

5 //line6

6 //line7

例如,在这个字符串中,第 4 行的值是 5,所以我必须省略它的中断并使其像


 1

 2

 3 5

 4

 5

 6

这是我的代码:


foreach(preg_split("/((\r?\n)|(\r\n?))/", $string) as $line){

    if ($line != __LINE__){

        //remove the break and I'm stuck here...

    }

有什么解决办法吗?提前致谢...


更新:我也尝试将其转换为数组,如下所示:


$linesArray = explode("\n", $string);

foreach($linesArray as $key => $val){

    if(($key+1) != $val){

            $output[$key] =  $linesArray[$key-1].' '.$val.' '.$linesArray[$key+1];

            $o_line++;

    }else{

        $output[$key] = $val;

        $o_line++;      

    }

}

但它不起作用或者我在某个地方错了......


呼唤远方
浏览 168回答 2
2回答

慕桂英4014372

我已经为你写了一段代码。让我知道它是否满足您的目标。$string = "1\n2\n3\n5\n4\n6\n5";$line = explode("\n", $string);$line2 = "";$n = 1;foreach($line as $v) {    if($n != $v) continue;    $line2 .= $v."\n";    $n++;}echo $line2;

杨__羊羊

可能是这一行有问题 - $output[$key] = $linesArray[$key-1]。' '.$val。' '.$linesArray[$key+1];// 因为第一次迭代的 key 是 0,所以它会像 $linesArray[-1]
打开App,查看更多内容
随时随地看视频慕课网APP