原型 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,官方解释是设置转义字符。对此不太理解,希望有人可以提供例子进行解释。
php函数fgetcsv()中的参数enclosure的解读