我要输出一个标准的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"
请问,如何做?
分不够,请说句话,诚心请教,谢谢大家了。
<?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"
请问,如何做?
分不够,请说句话,诚心请教,谢谢大家了。
通过我的分析,发现,只要数据项没有特殊字符(空格或逗号),fputcsv函数就不会输出双引号。请问大家,有什么方法可以规避这种情况吗
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'wwwnnn'
);
#用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写入文件即可
'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"
$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"
"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");
}
?>