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



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

这是我的字符串:

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)|(rn?))/", $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++;      
}
}

但它不起作用,或者我在某处错了...

我已经为你写了一个代码。让我知道它是否符合您的目标。

$string = "1n2n3n5n4n6n5";
$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];

由于第一次迭代的键为 0,所以它就像 $linesArray[-1]

最新更新