将 csv 文件的换行符更改为相同的换行符
Change line feed of csv file to the same one
我需要处理 csv 文件。我想编写一个使用 csv 文件并用 php 编写的网络应用程序。
问题是所有 csv 文件都有不同的换行符 /r、/n、/r/n/。
我需要在所有这些方面都一样。
直到现在我都是这样做的:
exec("sed -i 's/\r$//' files/uploads/$fileName"); // DOS to Unix
exec("sed -i 's/$/\r/' files/uploads/$fileName"); // Unix to DOS
最后他们都有/r/n。
但是,如果我得到一个以 /r 作为换行符的 csv 文件,该如何处理呢?
感谢您的帮助
您在 php 中有很多选择。例如:
$f=file_get_contents("files/uploads/$fileName");
$f=str_replace("\r","",$f);
file_put_contents("files/uploads/$filename",$f);
这将从输入中删除所有 RETURN 个字符(“\r”)并仅使用换行符(“\n”)写回文件。
我还没有看到只有“\r”字符的 CSV/Spreadsheet 文件,但如果是这种情况,您也可以这样做:str_replace("\r","\n "),然后将“\n\n”缩减为单个“\n”(再次使用 str_replace)。
还有一个基于 REGEX 的解决方案,但我的大脑中的正则表达式部分今天早上有点炸了。
我需要处理 csv 文件。我想编写一个使用 csv 文件并用 php 编写的网络应用程序。 问题是所有 csv 文件都有不同的换行符 /r、/n、/r/n/。 我需要在所有这些方面都一样。 直到现在我都是这样做的:
exec("sed -i 's/\r$//' files/uploads/$fileName"); // DOS to Unix
exec("sed -i 's/$/\r/' files/uploads/$fileName"); // Unix to DOS
最后他们都有/r/n。 但是,如果我得到一个以 /r 作为换行符的 csv 文件,该如何处理呢?
感谢您的帮助
您在 php 中有很多选择。例如:
$f=file_get_contents("files/uploads/$fileName");
$f=str_replace("\r","",$f);
file_put_contents("files/uploads/$filename",$f);
这将从输入中删除所有 RETURN 个字符(“\r”)并仅使用换行符(“\n”)写回文件。
我还没有看到只有“\r”字符的 CSV/Spreadsheet 文件,但如果是这种情况,您也可以这样做:str_replace("\r","\n "),然后将“\n\n”缩减为单个“\n”(再次使用 str_replace)。
还有一个基于 REGEX 的解决方案,但我的大脑中的正则表达式部分今天早上有点炸了。