我要输出一个标准的CSV文件格式,数据项要加双引号。我用以下程序实现:
<?php
$teststr='wwwnnn';
$list = array (
    'aaa,bbb,ccc,dddd',
    '123,456,789',
    $teststr
);
$fp = fopen('c:\file.csv', 'w');
fputcsv($fp, $list,',','"');
fclose($fp);
?>
当前输出是
"aaa,bbb,ccc,dddd","123,456,789",wwwnnn我想输出
"aaa,bbb,ccc,dddd","123,456,789","wwwnnn"
请问,如何做?
分不够,请说句话,诚心请教,谢谢大家了。

解决方案 »

  1.   

    特请xuzuning等PHP前辈指点一下,多谢了
      

  2.   

    通过我的分析,发现,只要数据项没有特殊字符(空格或逗号),fputcsv函数就不会输出空格。请问大家,有什么方法可以规避这种情况吗
      

  3.   

    写错了
    通过我的分析,发现,只要数据项没有特殊字符(空格或逗号),fputcsv函数就不会输出双引号。请问大家,有什么方法可以规避这种情况吗
      

  4.   

    //$teststr='wwwnnn';
    $list = array (
      'aaa,bbb,ccc,dddd',
      '123,456,789',
      'wwwnnn'
    );
      

  5.   


    #用sscanf()函数试试
    <?php
    // get author info and generate DocBook entry
    $auth = "24\tLewis Carroll";
    $n = sscanf($auth, "%d\t%s %s", $id, $first, $last);
    echo "<author id='$id'>
        <firstname>$first</firstname>
        <surname>$last</surname>
    </author>\n";
    ?> 
    #将$n写入文件即可
      

  6.   

    抱歉,#5发的信息与要求有出入,这样:$list = array (
      'aaa,bbb,ccc,dddd',
      '123,456,789',
      'wwwnnn'
    );
    $format = '"%s","%s","%s"';
    printf($format, $list[0], $list[1], $list[2]);
    #"aaa,bbb,ccc,dddd","123,456,789","wwwnnn"
      

  7.   

    我的问题的关键点在于fputcsv函数,当数据项中无空格或逗号时,就会不带引号,而不是问大家如何给一个常量加引号
      

  8.   

    这意思?$teststr1='wwwnnn';
    $list1 = array (
      'aaa,bbb,ccc,dddd',
      '123,456,789',
      $teststr1
    );
    $teststr2='www nnn';
    $list2 = array (
      'aaa,bbb,ccc,dddd',
      '123,456,789',
      $teststr2
    );
    function str_pos_format($teststr,$list){
    $pos1 = strpos($teststr, " ");
    $pos2 = strpos($teststr, ","); if($pos1 === false && $pos2 === false)
    $format = '"%s","%s",%s';
    else
    $format = '"%s","%s","%s"'; return $format;
    }
    printf(str_pos_format($teststr1,$list1), $list1[0], $list1[1], $list1[2]);
    #"aaa,bbb,ccc,dddd","123,456,789",wwwnnn
    echo "<br>";
    printf(str_pos_format($teststr2,$list2), $list2[0], $list2[1], $list2[2]);
    #"aaa,bbb,ccc,dddd","123,456,789","www nnn"
      

  9.   

    楼主的需求和csv还是差了不少的,多简单的一个问题,非得csv,人家csv的行为可不仅仅这么一点噢。[User:root Time:06:29:17 Path:/home/liangdong/php]$ cat test.txt
    "aaa,bbb,ccc,dddd","123,456,789","wwwnnn"
    [User:root Time:06:29:19 Path:/home/liangdong/php]$ cat arr.php 
    <?php
    $teststr = 'wwwnnn';
    $list = array(
                      'aaa,bbb,ccc,dddd',
                      '123,456,789',
                      $teststr
                    );
    $fp = fopen("test.txt", 'w');
    output_data($fp, $list);
    fclose($fp);// user-defined
    function output_data($handle, $field) {
            $cnt = count($field);
            for ($ndx = 0; $ndx != $cnt; ++ $ndx) {
                    fprintf($handle, '"%s"', $field[$ndx]);
                    if ($ndx != $cnt - 1) {
                            fputs($handle, ",");
                    }
            }
            fputs($handle, "\n");
    }
    ?>