0

次のファイル例があります。

りんご、
さくらんぼ、、
(削除)
梨、、
(削除)
ブドウ、
スイカ

次の式を使用しました

preg_replace('/,+/', ',', $n);

この答えから。

これは正常に機能しますが、ファイルが1行にある場合に限ります。

apple, cherry,, pear,,...

式を拡張して複数行の余分な重複を削除し、ファイルが次のようになるようにするにはどうすればよいですか。

リンゴ、
サクランボ、
ナシ、
ブドウ、
スイカ

コードは次のとおりです。

foreach ($lines as $line_num => $line) {
if ($line[0] === '.') { $compare_line = $line; $compare_line = preg_replace('/,+/', ',', $compare_line); echo $compare_line; } }

4

2 に答える 2

2

私の推測では、行を分割し、正規表現を最初の行にのみ適用するために何かをしていると思います。これをやってみてください:

file_put_contents("newfile.txt",preg_replace("/,+/", ",", file_get_contents("oldfile.txt")));
于 2013-03-02T18:42:47.387 に答える
0

/s式の最後にフラグを追加することで、preg_replaceですべての行を1行として処理することができます。

preg_replace('/,+/s', ',', $n);
于 2013-03-02T19:04:57.490 に答える