带行尾字符的PHP fgetcsv
我有一个格式奇怪的文件需要用PHP解析。它使用带行尾字符的PHP fgetcsv,php,fgetcsv,Php,Fgetcsv,我有一个格式奇怪的文件需要用PHP解析。它使用^作为字段分隔符,~作为行尾字符。我可以轻松地将fgetcsv的$delimiter参数设置为^以获取大部分数据。 问题是,fgetcsv不接受下线字符作为参数——因此它根据换行符而不是根据下线字符读取行 有办法解决这个问题吗?您可以阅读文件,将~替换为\n,然后使用str\u getcsv: $csv = file_get_contents('/path/to/file.csv'); $csv = str_replace('~','\n',$csv
^
作为字段分隔符,~
作为行尾字符。我可以轻松地将fgetcsv
的$delimiter
参数设置为^
以获取大部分数据。
问题是,fgetcsv
不接受下线字符作为参数——因此它根据换行符而不是根据下线字符读取行
有办法解决这个问题吗?您可以阅读文件,将
~
替换为\n
,然后使用str\u getcsv
:
$csv = file_get_contents('/path/to/file.csv');
$csv = str_replace('~','\n',$csv);
$csv = str_getcsv($csv, '^');
很好的旧PHP,如果有一些不成熟的标准函数可用,人们就会忘记如何手动操作:
$lines = explode('~', file_get_contents($pathToMyFile));
foreach($lines as $line)
{
$values = explode('^', $line);
}
根据转义策略(如果值中出现
^
或~
),您必须对此进行一些调整。您有这种格式奇怪的数据的示例吗?@Niels--非常好!谢谢提醒,函数可能会比它们的价值更麻烦。那么问题是文件有多大?