CSV文件输出的问题

liangpei2008 2012-07-03 07:03:29
我要输出一个标准的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"
请问,如何做?
分不够,请说句话,诚心请教,谢谢大家了。
...全文
305 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这意思?
$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"

kyzy_yy_pm 2012-07-03
  • 打赏
  • 举报
回复
'\"'.$teststr.'\"'
kyzy_yy_pm 2012-07-03
  • 打赏
  • 举报
回复
'\"wwwnnn\"'
liangpei2008 2012-07-03
  • 打赏
  • 举报
回复
我的问题的关键点在于fputcsv函数,当数据项中无空格或逗号时,就会不带引号,而不是问大家如何给一个常量加引号
  • 打赏
  • 举报
回复
抱歉,#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"

  • 打赏
  • 举报
回复

#用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写入文件即可
码无边 2012-07-03
  • 打赏
  • 举报
回复
//$teststr='wwwnnn';
$list = array (
'aaa,bbb,ccc,dddd',
'123,456,789',
'wwwnnn'
);
liangpei2008 2012-07-03
  • 打赏
  • 举报
回复
写错了
通过我的分析,发现,只要数据项没有特殊字符(空格或逗号),fputcsv函数就不会输出双引号。请问大家,有什么方法可以规避这种情况吗
liangpei2008 2012-07-03
  • 打赏
  • 举报
回复
通过我的分析,发现,只要数据项没有特殊字符(空格或逗号),fputcsv函数就不会输出空格。请问大家,有什么方法可以规避这种情况吗
liangpei2008 2012-07-03
  • 打赏
  • 举报
回复
特请xuzuning等PHP前辈指点一下,多谢了
qq120848369 2012-07-03
  • 打赏
  • 举报
回复
楼主的需求和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");
}
?>
蹲坑看月亮 2012-07-03
  • 打赏
  • 举报
回复
你们理解错了

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧