PHP fgetcsv()分隔符
关于文档,函数PHP fgetcsv()分隔符,php,csv,fgetcsv,readfile,Php,Csv,Fgetcsv,Readfile,关于文档,函数fgetcsv()中有一些参数:句柄、长度、分隔符、附件和转义 现在,我有两个问题: 外壳到底做什么 我有一个csv文件,每行5列。想象一下:1,2,3,4,5 所以索引是从0到4。但每当我想从索引4中获取日期时,就会返回一个空值。除非我在它后面加了逗号(在它后面加一个额外的列,使内容如下:1,2,3,4,5,6)。我如何解决这个问题?似乎有一些问题,因为在csv文件的每一行的最后一项后缺少逗号 1。enclosure参数是封装特定字段数据的字符,或“索引”。默认情况下,该参数是一
fgetcsv()
中有一些参数:句柄、长度、分隔符、附件和转义
现在,我有两个问题:
所以索引是从0到4。但每当我想从索引4中获取日期时,就会返回一个空值。除非我在它后面加了逗号(在它后面加一个额外的列,使内容如下:1,2,3,4,5,6)。我如何解决这个问题?似乎有一些问题,因为在csv文件的每一行的最后一项后缺少逗号 1。
enclosure
参数是封装特定字段数据的字符,或“索引”。默认情况下,该参数是一个“
,这意味着您可以在”
字符中“括起”字符串
例如:
1,2,"this is three",4
2.根据注释,您正在调用
fgetcsv($handle,10000,,')
。您正在阅读的行可能超过10000个字符。尝试将长度更改为0
,这将是“无限制”,看看是否有帮助。另一种解决方案是尝试将列的值用双引号括起来。Enclosure是封闭字段的字符。它是一个额外的分隔符,属于某种类型
例如,hello,world
有一个逗号作为字段分隔符,没有文本分隔符,而“hello”,“world”
有一个引号作为文本分隔符。有些系统使用分隔值和不限定值分别表示文本字段和数字字段(我相信Microsoft Excel会这样做)。这允许字段在其值中包含字段分隔符:
"Hello,world","Second Field","Third, and last, field".
其他一些系统仅包含包含字段分隔符的值,或包含空格的值,这意味着在这些系统上,不受限制的值不一定是数字
如果您有一个“不重要”的情况—不限制值,值中没有转义字段分隔符(即,没有“a,firstpartB\,secondpartB,C”之类的内容)—您可能会完全跳过CSV转换并运行
$line = fgets($file, MAX_EXPECTED_LINE_LEN);
// This splits ' A, B, C ' into 'A', ' B' and ' C' (note spaces)
$row = explode(',', trim($line)); // other delimiters can be used
或
我似乎无法重现你所经历的问题;它可能与不同的行尾编码有关(即CRLF而不是LF)
必要时,您可以将
fgetcsv
分为两个组件fgets
和str_getcsv()
,操作调用之间的行(使用trim
,或者如果情况更糟,则添加缺少的逗号)。我的工作方式如下:
while ($row = $stmt -> fecht()){
echo "\"";
echo $row['email'];
echo "\"";
// Export every row to a file
$arr = array(',');
fputcsv($data, $arr, ";", '"' );
}
你能把csv文件粘贴到某个地方吗?我使用
while($data=fgetcsv($handle,10000,,')!==FALSE){
读取行,并获取它们的值,如$title=$data[0];
while ($row = $stmt -> fecht()){
echo "\"";
echo $row['email'];
echo "\"";
// Export every row to a file
$arr = array(',');
fputcsv($data, $arr, ";", '"' );
}