fgetcsv 无法读取 mac 格式的 csv 文件中的行结尾,有更好的解决方案吗?

发布于 2024-10-09 01:13:01 字数 226 浏览 2 评论 0原文

我正在使用 php 和 fgetcsv 函数解析 csv 文件。它解析了一行中的所有内容,后来我发现,csv包含回车符“\r”。我看到 - 之前被报告为 php bug。我已经通过设置 php 运行时配置解决了这个问题 -

ini_set("auto_detect_line_endings", "1");

有没有更多的解决方案或者这是正确的方法?

谢谢

I was parsing a csv file using php with fgetcsv function. It parsed all content in a line, later i found, csv contains carraige return as "\r". I saw - it was reported as php bug before. I've solved this by setting php runtime configuration which is -

ini_set("auto_detect_line_endings", "1");

is there any more solution or is this the right way?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫九 2024-10-16 01:13:01

php 文档明确建议设置auto_detect_line_endings

但是,我无法理解为什么您会在 2010 年使用 \r 来分隔行。如果可能,请将它们转换为 UNIX 风格的 \n

Setting auto_detect_line_endings is explicitly recommended by the php documentation.

However, I cannot fathom why you would want to delimit lines with \r in 2010. If possible, convert them to the UNIX-style \n.

夏末的微笑 2024-10-16 01:13:01

\r 行结尾是由 Microsoft Excel 在另存为 CSV 文件时创建的,因此如果您从 Excel 电子表格开始,则没有太多解决方法。

使用 auto_detect_line_endings 效果很好,或者您可以使用 preg_replace("/\r\n|\n\r|\n|\r/", "\n", $ 规范行结尾主题);

\r line endings are created by Microsoft Excel when saving as a CSV file, so there is not much getting around that if you are starting with an Excel spreadsheet.

Using auto_detect_line_endings works fine, or you can normalize line endings with preg_replace("/\r\n|\n\r|\n|\r/", "\n", $subject);

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文