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()
中有一些参数:句柄、长度、分隔符、附件和转义

现在,我有两个问题:

  • 外壳到底做什么
  • 我有一个csv文件,每行5列。想象一下:1,2,3,4,5

  • 所以索引是从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, ";", '"' );
    }