带有行结束字符的PHP fgetcsv

时间:2014-07-07 21:28:23

标签: php fgetcsv

我有一个奇怪格式的文件,我需要用PHP解析。它使用^作为字段分隔符,~作为行尾字符。我可以轻松地将$delimiter的{​​{1}}参数设置为fgetcsv以获取大部分数据。 问题是^不接受EOL字符作为参数 - 所以它根据换行符读取行而不是尊重EOL字符。

有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

好旧的PHP,如果有一些半生不熟的标准功能可供人们忘记如何手动操作:

$lines = explode('~', file_get_contents($pathToMyFile));
foreach($lines as $line)
{
  $values = explode('^', $line);
}

根据转义策略(如果值中出现^~),您必须稍微调整一下。

答案 1 :(得分:0)

您可以阅读该文件,将~替换为\n,然后使用str_getcsv

$csv = file_get_contents('/path/to/file.csv');
$csv = str_replace('~','\n',$csv);
$csv = str_getcsv($csv, '^');
相关问题