作者JoeHorn (狮子男)
看板PHP
标题Re: [请益] 输出csv档
时间Thu Nov 23 05:51:32 2006
※ 引述《alexblue (倒数27天退伍)》之铭言:
: ※ 引述《foxzgerald (O⊥M)》之铭言:
: : $content 的内容是什麽? (阵列或字串?)
: : 以及 $content 的处理流程是什麽?
: : 或许可以多提供些程式码的片段;
: : 因为这些资讯尚不足提供具体的建议。
: : 但是有个方向可以参考一下:
: : $content 可能需用 str_replace 先进行字串的脱序
: 例如 $content="测试,CVS输出";
: 小弟原本的作法 是 $content=str_replace(",",",",$content);
: 再输出成cvs档 是OK的!! 但我想要保留逗号 不要变成全形的逗号的作法!!
如果你举例的这个 $content 是一笔纪录,那各栏位的区隔标志是什麽?
如果区隔标志是半形逗号,那你的每个栏位内容就应该不应该有逗号存在。
我举个例子:
$good_record = "王大明
|男性
|2000.01.01
|大家好,我是王大明";
上面可以切出四个栏位,分别是姓名、性别、生日、自我介绍。
区隔标志是「|」。
$bad_record = "王大明
,男性
,2000.01.01
,大家好
,我是王大明";
这笔纪录的区隔标志是「,」。
这种纪录绝对会因为使用者在自我介绍里面输入了「,」,使得栏位被切成五个。
foxzgerald 前辈问你的是,你的 $content 到底是不是一笔纪录。
* 如果「是」,很抱歉,这是最差的设计方式,因为不管你用什麽作区隔,
都有可能因为使用者的任意输入造成系统的误判。
最佳解是把纪录存成阵列,例如:
$best_record = {"王大明", "男性", "2000.01.01", "大家好,我是王大明"};
这种纪录要作 CSV 输出只要用输出这种格式:
"$best_record[1]","$best_record[2]","$best_record[3]","$best_record[4]"
输出後每个栏位前後都有「"」,自我介绍里面的「,」会被「"」包起来,
不会被 CSV 阅读软体或 parser 判断为栏位区分字元。
* 如果不是,那 $content 到底是什麽?
如果 $content 就是栏位内容的话,前後加上「"」不会有问题才对。
--
╓╥╥╖╓─╥╖ ╓─╥╖ ╓ ╓╖ ╓─╥╖ ╓─╥╖ ╓╖╓╖
╟╢ ║ ╟╢ ║ ╙╜ ║ ╟╢ ║ ╟╢ ║ ╟╢ ║║╟╢
╟╢ ║ ╟╢ ╟─ ╟─╫╢ ║ ╟╢ ╟─╫╜ ║║╟╢
╟╢ ║ ╟╢ ║ ╓╖ ║ ╟╢ ║ ╟╢ ║ ║ ║║╟╢
╙╨╜ ╙─╨╜ ╙─╨╜ ╙ ╙╜ ╙─╨╜ ╙ ╙╜ ╙╙╨╜
狮子男
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.113.163.30
※ 编辑: JoeHorn 来自: 59.113.163.30 (11/23 05:56)