1、“CSV文件的格式中,双引号如果作为值,则要替换成两个连续的双引号。且该字段的外面要用双引号括上。”
并无此约束
read"csv,ppp
read""csv,ppp
都是合法的格式2、若字段用双引号括起,则字段中的双引号要遵从vb的串格式约定,请在自行编程生成CSV文件时注意
并无此约束
read"csv,ppp
read""csv,ppp
都是合法的格式2、若字段用双引号括起,则字段中的双引号要遵从vb的串格式约定,请在自行编程生成CSV文件时注意
而且要求如果作为值的双引号是一个,则给出错误提示。
我只是对这个CSV文件进行处理,检查,放到一个文本数据库中。
可是我不知道这种怎么判断?
请问一下,我读取csv文件出现乱码问题是怎么回事,在本地不会有乱码,但传到服务器上去就出现乱码了
mb_convert_encoding($str, "SJIS", "EUC-JP");
可是这个CSV文件的字段中可能包含逗号,如果直接用file按行打开文件,然后以逗号分割
就会把一个字段分成两个,还是会出错啊。朋友们,还有什么主意吗?
可是这个CSV文件的字段中可能包含逗号,如果直接用file按行打开文件,然后以逗号分割
就会把一个字段分成两个,还是会出错啊。//
怎么会出错 不会出错阿 我也是这样做的。
注意:分隔开的字符里 有数不清的tab符或者其他看不见的字符。(,前面或后面都没有这种字符) 用 CSting.Left 、mid 或者Right函数 自己取出你想要的吧。
我是这样处理的,例如a.csv文件中有这样一行:123,"a""bc","de,f",ghi
/*===代码如下===*/
$file = file( "a.csv" );
$num = count($file);
for($i=0;$i<$num;$i++)
{
list($id1, $id2,$id3,$id4) = explode(',',$file[$i],4);
echo($id1.'<br />');
echo($id2.'<br />');
echo($id3.'<br />');
echo($id4.'<br />');
echo($id5.'<br />');
}
/*===========结果============*/
123
"a""bc"
"de
f"/*=============*/
"de,f"这个字段读出后被拆成两个字段
123,"a""bc","de,f",ghi<?php
$fp = fopen('a.csv', 'r');
while($r = fgetcsv($fp)) {
print_r($r);
}
fclose($fp);
?>
输出
Array
(
[0] => 123
[1] => a"bc
[2] => de,f
[3] => ghi
)有什么不对吗???
xuzuning(唠叨)上面举例确实是对的,但是如果把数据中的 "a""bc" 换成 "a"bc"
输出就成为:
Array
(
[0] => 123
[1] => abc" //这个是错的
[2] => de,f
[3] => ghi
)
现在我就是想怎么样才能检查出类似 "a"bc" 这样的数据(作为值的双引号是一个)是错的,
我现在要做的是检查a.csv的格式,如果不正确(作为值的双引号是一个),给出提示,否则将它存入一个文本数据库(b.csv)中,同时还可以将这个文本数据库导出(c.csv)。"a""bc"(导入文件中的格式) ---> "a"bc"(数据库中的格式) --> "a""bc"(导出文件中的格式) 如果双引号不是换照CSV的规定,则读取后就不对了。弄的我直晕,本来挺简单的,可是人家要求这样,我只对想办法了。泪~~~PS:谢谢你们的帮忙呵呵。
"123","a""bc","de,f","ghi"
Array ( [0] => 123 [1] => a"bc [2] => de,f [3] => ghi )
"你可以先处理一下,如果只有一个双引号的号的,那就加一个双引号上去"============
可以说的再详细些吗?
str_replace(""", """", $str);
类似这种数据格式 "a"bc" 读出来就是错的,加双引号有什么用呢?
的值