【问题标题】:PHP detect Windows or Unix format of csv or txt file?PHP 检测 Windows 或 Unix 格式的 csv 或 txt 文件?
【发布时间】:2013-05-02 23:03:38
【问题描述】:

我正在使用 PHP 将文件上传到服务器,然后将路径传递给 SQL 存储过程,该过程执行 BULK INSERT 将文件导入 SQL 表。

在 SQL 中,我知道如何让 BULK INSERT 处理基于 Windows 和 Unix 的 csv 和 txt 文件,但我需要知道它是哪种格式。

我希望我可以在 PHP 中解决这个问题,然后将其传递给存储过程。然后我可以相应地更新ROWTERMINATOR

PHP 中有没有办法检测 csv 或 txt 是基于 Windows 还是 Unix?

这方面的任何帮助都会很棒。

谢谢!

【问题讨论】:

  • 使用 fgets() 读取几行并测试“\r\n”或“\n”作为字符串中的最后一个字符 - 特别注意php.net/manual/en/…

标签: php sql csv


【解决方案1】:

从文件中获取第一行。检查最后两个字符或最后一个字符是:

  • \r\n -> 窗户
  • \n -> Unix

例子:

$lines = file('test.csv');
$line = $lines[0];

switch(TRUE) {
    case substr($line, -2) === "\r\n" :
        echo "windows";
        break;
    case substr($line, -1) === "\n" :
        echo "unix";
        break;
    default :
        // pigs can fly
        echo "unknown line ending"
        break;
}

【讨论】:

  • 谢谢! :) 我也喜欢这种用法。请注意,通过这种用法,您可以与switch 进行strict 比较。常规开关就像使用 == 运算符
  • 是的 +1 案例使用!
猜你喜欢
  • 2020-01-28
  • 2021-02-16
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多