Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带行尾字符的PHP fgetcsv_Php_Fgetcsv - Fatal编程技术网

带行尾字符的PHP fgetcsv

带行尾字符的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

我有一个格式奇怪的文件需要用PHP解析。它使用
^
作为字段分隔符,
~
作为行尾字符。我可以轻松地将
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--非常好!谢谢提醒,函数可能会比它们的价值更麻烦。那么问题是文件有多大?