我有一个奇怪格式的文件,我需要用PHP解析。它使用^
作为字段分隔符,~
作为行尾字符。我可以轻松地将$delimiter
的{{1}}参数设置为fgetcsv
以获取大部分数据。
问题是^
不接受EOL字符作为参数 - 所以它根据换行符读取行而不是尊重EOL字符。
有办法解决这个问题吗?
答案 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, '^');