0

我有以下文件示例:

苹果,
樱桃,,
(去除)
梨,,
(去除)
葡萄,
西瓜

我使用了以下表达式

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

这个答案。

这工作正常,但仅当文件位于一行时:

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 将所有行作为一行处理。

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