日期:2014-05-17  浏览次数:20439 次

怎么从文件的内容判断一个文件是不是.csv文件
这里面不允许通过扩张名。怕别人改扩张名
还有我安装里面是否包含逗号不行,因为有的文件是读出的内容也是乱码?结果它就会把乱码读成逗号?
而且我需要判断.csv文件的严谨方法和理论,不能想当然的。其实仅按逗号肯定是不严谨的啊,其实是乱码可能变成逗号,其二一个文件里面有一个逗号算是合格的csv文件了

谢谢,求高手

------解决方案--------------------
没办法
------解决方案--------------------
试试str_getcsv解析
http://php.net/manual/en/function.str-getcsv.php
用是否error来判断
------解决方案--------------------
任何情况下都不会因读取逗号而导致乱码

csv文件是文本文件,唯一可识别的地方就是每行都有相等数量的列分隔符(默认是逗号)
考虑到内容中可能存在逗号(此时内容需要用引号括起),当检测到80%以上行的列分隔符数量相等时,就可认为是合格的csv文件

另外非标准的csv,即字符类型的内容未用双引号括起的csv。至少在 php5.3 for win 是无法用
fgetcsv 或 str_getcsv 函数正确读取的
------解决方案--------------------
csv 文件表达的是一个阵列
如果每行的列数不等,就不是csv
------解决方案--------------------
全称

  Comma Separated Values
编辑本段
规则

  1 开头是不留空,以行为单位。
  2 可含或不含列名,含列名则居文件第一行。
  3 一行数据不垮行,无空行。
  4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
  5 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。
  6 列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
  7 文件读写时引号,逗号操作规则互逆。
  8 内码格式不限,可为 ASCII、Unicode 或者其他。
  9 不支持特殊字符
------解决方案--------------------
按规则要求来查
------解决方案--------------------
你希望用户的csv是什么格式?另外对于文件来说,没有乱码的概念,只有字节的概念,
乱码只是若干字节不能在指定的字符集(比如GB2312)里显示而已。
------解决方案--------------------
以半角逗号(即,)作分隔符,列为空也要表达其存在
这点很重要
------解决方案--------------------
找一个csv导成其他格式的类 能导成功的就是 不能的就不是,这曲线救国了吧
------解决方案--------------------
探讨

引用:
以半角逗号(即,)作分隔符,列为空也要表达其存在
这点很重要

都跟你说了,这个等于没说?
要是你的一个word里面也有逗号,你读出内容,请问你知道这个逗号是分割符还是有效字符吗?


你可以按照逗号来读取一个.csv文件

但是你仅用有没有逗号来区别是不是。csv文件 这个太牵强。理由太不充分

这个逗号不是充要条件