Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php preg_替换多行上的重复字符串_Php_Preg Replace_Duplicate Removal - Fatal编程技术网

php preg_替换多行上的重复字符串

php preg_替换多行上的重复字符串,php,preg-replace,duplicate-removal,Php,Preg Replace,Duplicate Removal,我有以下文件示例: 苹果, 樱桃, ,(删除) 梨, ,(删除) 葡萄, 西瓜 我使用了下面的表达式 preg_replace('/,+/', ',', $n); 从答案来看 这很好,但仅当文件位于一行时: apple, cherry,, pear,,... 如何扩展表达式以删除多行上多余的重复项,以便文件读取: 苹果, 樱桃, 梨, 葡萄, 西瓜 代码如下: foreach($line作为$line_num=>$line的行){ 如果($line[0]='.')){ $compare_li

我有以下文件示例:

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

我使用了下面的表达式

preg_replace('/,+/', ',', $n);
从答案来看

这很好,但仅当文件位于一行时:

apple, cherry,, pear,,...
如何扩展表达式以删除多行上多余的重复项,以便文件读取:

苹果,
樱桃,
梨,
葡萄,
西瓜

代码如下:

foreach($line作为$line_num=>$line的行){
如果($line[0]='.')){ $compare_line=$line; $compare_line=preg_replace(“/,+/,”,“,”,$compare_line); echo$compare_行; }
}

我猜您正在做一些事情来拆分行,然后只对第一行应用正则表达式。试着这样做:

file_put_contents("newfile.txt",preg_replace("/,+/", ",", file_get_contents("oldfile.txt")));

通过在表达式末尾添加标志
/s
,可以使preg_replace将所有行作为一行处理

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

是的,我使用了foreach($line作为$line_num=>$line)。我要试试这个。谢谢,这并没有达到我想要的效果,因为我正在寻找特定的字符串,在将它们添加到新文件之前必须找到合适的字符串。+1回答得好!如果OP想要更具体的东西,他应该发布他的代码、输入、预期结果和实际结果。对不起,我更新了示例并添加了显示所需任务的foreach。如果额外的逗号数量有限(并且您100%确定),例如只有2或3个重复,您可以使用str_replace(数组(“,,,,“,,”,“,”,“,”,“,”,$n)更快。它永远不会超过“,”两个逗号。问题是删除换行符上单独存在的多余逗号。