Home >Backend Development >PHP Tutorial > 如何从文件的内容判断一个文件是不是.csv文件

如何从文件的内容判断一个文件是不是.csv文件

WBOY
WBOYOriginal
2016-06-13 13:09:292787browse

怎么从文件的内容判断一个文件是不是.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文件 这个太牵强。理由太不充分

这个逗号不是充要条件
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn