首页 > 代码库 > php函数fgetcsv()中的参数enclosure的解读

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

原型 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,官方解释是设置转义字符。对此不太理解,希望有人可以提供例子进行解释。