php函数fgetcsv()中的参数enclosure的解读

本文详细解析了CSV文件处理中的fgetcsv函数,包括enclosure参数的使用,以及如何正确处理包含特殊字符如逗号、引号和换行符的字段。通过实例演示了不同情况下的CSV格式及其对输出的影响,并对最后参数escape的作用进行了补充说明。

原型 fgetcsv(resource fp, int length [, string delimiter [, string enclosure [, string escape]]])

对于enclosure的解释是围绕字段的字符。

参考http://blog.ifeeline.com/217.html的说明:

包含逗号, 双引号, 或是换行符的字段必须放在引号内(只有三个特殊值时需要特别处理)。
字段内部的引号必须在其前面增加一个引号来实现引号的转码。
分隔符逗号前后的空格 可能不会被修剪掉。
元素中的换行符将被保留下来。

对应于下面例子,就会比较容易理解上述说明了。

字段1            字段2                        字段3

goog    veture"vision,good"             abc

 

对于上面一行的三个字段,假如我想用fgetscv()把它读出来并存到array去,就必须对csv文件中存储的格式进行限定。

csv存储的内容有l两种情况:

(1)情况一, 直接是goog,veture"vision,good",abc

这样你会发现get出来的不是你想要的东西。其array输出是

Array ( [0] => goog [1] => vetur"evision [2] => good" [3] => abc )

(2)情况二,csv里的内容是goog,"veture""vision,good""",abc

这是根据上面的说明对原有内容进行修改过的。加上了围绕字符双引号。

其array输出是我们想要的

Array ( [0] => goog [1] => veture"vision,good" [2] => abc )

 

对于上面说明的一些补充,若字段内含有逗号,仅需将该字段用双引号括住即可,无需再在逗号前面加双引号。

 

 

另外,对于最后一个参数escape,官方解释是设置转义字符。对此不太理解,希望有人可以提供例子进行解释。

转载于:https://www.cnblogs.com/weili-wu/p/3895259.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值