私のテキスト(...
実際の一部です):
(01) Text here
(02) sometimes also (with brackets)
(03) foo
(05) and [other stuff!?]
...
(07) foo
(08) bar
(09) bar
重複する行(XX) foo
を見つけ(XX) bar
て印刷します。
//workaround
$tNormalized = preg_replace('/(*ANYCRLF)^\(\d+\) /m', '(??) ', $t);
$arr = explode("\n", $tNormalized);
if ( count($arr) > 1 ) {
for ($i=1; $i<count($arr); $i++) {
if( $arr[$i-1] == $arr[$i] ) {
echo "Match:<br>";
echo $arr[$i-1];
echo $arr[$i];
}
}
}
望ましい結果:
Match:
(03) foo
(07) foo
Match:
(08) bar
(09) bar
問題1:行の先頭にある括弧内の数字を無視して、重複する行を一致させます。数字を角かっこで囲んで印刷したい。それらを「(??)」に正規化することは、単なる回避策です。問題2::if( $arr[$i-1] == $arr[$i] )
これは前の行をチェックします。ただし、チェックなども行って$arr[$i-2]
ください$arr[$i-3]
。