我有以下文件示例:
苹果,
樱桃,
,(删除)
梨,
,(删除)
葡萄,
西瓜
我使用了以下表达式
preg_replace('/,+/', ',', $n);
来自this回答。
这样可以正常工作,但前提是文件在一行:
apple, cherry,, pear,,...
如何扩展表达式以删除多行上的多余重复项,使文件显示为:
苹果,
樱桃,
梨,
葡萄,
西瓜
以下是代码:
foreach ($lines as $line_num => $line) {
if ($line[0] === '.') {
$compare_line = $line;
$compare_line = preg_replace('/,+/', ',', $compare_line);
echo $compare_line;
}
}
答案 0 :(得分:2)
我的猜测是你正在做一些事情来分割线条然后只将正则表达式应用到第一行。试着这样做:
file_put_contents("newfile.txt",preg_replace("/,+/", ",", file_get_contents("oldfile.txt")));
答案 1 :(得分:0)
您可以通过将标记/s
添加到表达式的末尾,使preg_replace将所有行作为一行处理。
preg_replace('/,+/s', ',', $n);