1、“CSV文件的格式中,双引号如果作为值,则要替换成两个连续的双引号。且该字段的外面要用双引号括上。”
并无此约束
read"csv,ppp
read""csv,ppp
都是合法的格式2、若字段用双引号括起,则字段中的双引号要遵从vb的串格式约定,请在自行编程生成CSV文件时注意

解决方案 »

  1.   

    可是这个CSV文件不是我生成的,而且这个CSV文件的规定是“CSV文件的格式中,双引号如果作为值,则要替换成两个连续的双引号。且该字段的外面要用双引号括上。如果字段中有逗号,该字段也要用双引号括上”
       而且要求如果作为值的双引号是一个,则给出错误提示。
       我只是对这个CSV文件进行处理,检查,放到一个文本数据库中。
      
    可是我不知道这种怎么判断?
      

  2.   

    楼主借个位置问一下:
    请问一下,我读取csv文件出现乱码问题是怎么回事,在本地不会有乱码,但传到服务器上去就出现乱码了
      

  3.   

    楼上的,CSV格式转换
    mb_convert_encoding($str, "SJIS", "EUC-JP");
      

  4.   

    谁在CSV文件的处理上比较熟练,帮解决一下吧。谢了。
      

  5.   

    我都不用fgetcsv这个函数,直接用file按行打开文件,然后以逗号分割,很方便
      

  6.   

    这个我也试过。
    可是这个CSV文件的字段中可能包含逗号,如果直接用file按行打开文件,然后以逗号分割
    就会把一个字段分成两个,还是会出错啊。朋友们,还有什么主意吗?
      

  7.   

    这个我也试过。
    可是这个CSV文件的字段中可能包含逗号,如果直接用file按行打开文件,然后以逗号分割
    就会把一个字段分成两个,还是会出错啊。//
    怎么会出错  不会出错阿  我也是这样做的。 
    注意:分隔开的字符里 有数不清的tab符或者其他看不见的字符。(,前面或后面都没有这种字符) 用 CSting.Left 、mid 或者Right函数 自己取出你想要的吧。
      

  8.   

    dychenyi():
    我是这样处理的,例如a.csv文件中有这样一行:123,"a""bc","de,f",ghi
    /*===代码如下===*/
    $file = file( "a.csv" );
    $num = count($file);

    for($i=0;$i<$num;$i++)
    {
    list($id1, $id2,$id3,$id4) = explode(',',$file[$i],4);
    echo($id1.'<br />');
    echo($id2.'<br />');
    echo($id3.'<br />');
    echo($id4.'<br />');
    echo($id5.'<br />');
    }
    /*===========结果============*/
    123
    "a""bc"
    "de
    f"/*=============*/
    "de,f"这个字段读出后被拆成两个字段
      

  9.   

    a.csv
    123,"a""bc","de,f",ghi<?php
    $fp = fopen('a.csv', 'r');
    while($r = fgetcsv($fp)) {
      print_r($r);
    }
    fclose($fp);
    ?>
    输出
    Array
    (
        [0] => 123
        [1] => a"bc
        [2] => de,f
        [3] => ghi
    )有什么不对吗???
      

  10.   

    唉,我的表达能力实在是差呵呵,绕了一大圈,先自己检计一下^^
    xuzuning(唠叨)上面举例确实是对的,但是如果把数据中的 "a""bc" 换成 "a"bc"
    输出就成为:
    Array
    (
    [0] => 123
    [1] => abc"    //这个是错的
    [2] => de,f
    [3] => ghi
    )
    现在我就是想怎么样才能检查出类似 "a"bc" 这样的数据(作为值的双引号是一个)是错的,
      

  11.   

    另外,更崩溃的是导入文件(a.csv)不是我能够修改的。
    我现在要做的是检查a.csv的格式,如果不正确(作为值的双引号是一个),给出提示,否则将它存入一个文本数据库(b.csv)中,同时还可以将这个文本数据库导出(c.csv)。"a""bc"(导入文件中的格式)  --->  "a"bc"(数据库中的格式) --> "a""bc"(导出文件中的格式) 如果双引号不是换照CSV的规定,则读取后就不对了。弄的我直晕,本来挺简单的,可是人家要求这样,我只对想办法了。泪~~~PS:谢谢你们的帮忙呵呵。
      

  12.   

    不会的
    "123","a""bc","de,f","ghi"
     Array ( [0] => 123 [1] => a"bc [2] => de,f [3] => ghi )
      

  13.   

    van_glm():
    "你可以先处理一下,如果只有一个双引号的号的,那就加一个双引号上去"============
    可以说的再详细些吗?
      

  14.   

    可以查找这个值里是否有双引号,有的话就加一个双引号上去。
    str_replace(""", """", $str);
      

  15.   

    双引号在哪里加?
    类似这种数据格式 "a"bc" 读出来就是错的,加双引号有什么用呢?
      

  16.   

    str_replace(""", """", $str);的意思就是把一个双引号替换成2个双引号,$str就是字段里
    的值