怎么从文件的内容判断一个文件是不是.csv文件

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

谢谢,求高手
...全文
902 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
以半角逗号(即,)作分隔符,列为空也要表达其存在
这点很重要
[/Quote]
都跟你说了,这个等于没说?
要是你的一个word里面也有逗号,你读出内容,请问你知道这个逗号是分割符还是有效字符吗?


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

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

这个逗号不是充要条件
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
按规则要求来查
[/Quote]
请问什么规格要求
黄袍披身 2012-08-23
  • 打赏
  • 举报
回复
找一个csv导成其他格式的类 能导成功的就是 不能的就不是,这曲线救国了吧
xuzuning 2012-08-23
  • 打赏
  • 举报
回复
以半角逗号(即,)作分隔符,列为空也要表达其存在
这点很重要
Meteorlet 2012-08-23
  • 打赏
  • 举报
回复
你希望用户的csv是什么格式?另外对于文件来说,没有乱码的概念,只有字节的概念,
乱码只是若干字节不能在指定的字符集(比如GB2312)里显示而已。
franzhong 2012-08-23
  • 打赏
  • 举报
回复
按规则要求来查
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
我要是第一行写5个元素,第二行写3个,第三行写4个,你的每行逗号还是相等的吗
[/Quote]我这样写不行吗?那就不是csv文件了
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
csv 文件表达的是一个阵列?


这个是值得思考和调研的一个问题。
xuzuning 2012-08-23
  • 打赏
  • 举报
回复
全称

  Comma Separated Values
编辑本段
规则

  1 开头是不留空,以行为单位。
  2 可含或不含列名,含列名则居文件第一行。
  3 一行数据不垮行,无空行。
  4 以半角逗号(即,)作分隔符,列为空也要表达其存在。
  5 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。
  6 列内容如存在半角引号(即")则应替换成半角双引号("")转义,并用半角引号(即"")将该字段值包含起来。
  7 文件读写时引号,逗号操作规则互逆。
  8 内码格式不限,可为 ASCII、Unicode 或者其他。
  9 不支持特殊字符
xuzuning 2012-08-23
  • 打赏
  • 举报
回复
csv 文件表达的是一个阵列
如果每行的列数不等,就不是csv
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
我要是第一行写5个元素,第二行写3个,第三行写4个,你的每行逗号还是相等的吗
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
唯一可识别的地方就是每行都有相等数量的列分隔符(默认是逗号)
这是你自己想的还是理论依据啊
如果我的文件每行的元素都不一样多,你的分割符还是每行都相等吗?
你的分割符的存在是你的每行的元素的多少为情况吧
wuyuwww 2012-08-23
  • 打赏
  • 举报
回复
如果你把jpg或其他类型的让fgetcsv读,他就把你读出乱码
xuzuning 2012-08-23
  • 打赏
  • 举报
回复
任何情况下都不会因读取逗号而导致乱码

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

另外非标准的csv,即字符类型的内容未用双引号括起的csv。至少在 php5.3 for win 是无法用
fgetcsv 或 str_getcsv 函数正确读取的
Meteorlet 2012-08-23
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]

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

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


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

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

这个逗号不是充要条件
[/Quote]

建议你还是看看CSV的格式标准吧。逗号就是分隔符,内容中有逗号要用""括起来如果有引号的要转义。
比如:以下格式就是合法的
1, "2,3", "3,4"

str_getcsv这样的csv函数都是实现这些标准的,并没有人说它的实现就是逗号分割
wuyuwww 2012-08-22
  • 打赏
  • 举报
回复
不行的,她只会按照你已经是,csv字符串的格式来解析你的,最后不是false 应该是乱码,对于乱码更是无法下手我
array str_getcsv ( string $input [, string $delimiter = ',' [, string $enclosure = '"' [, string $escape = '\\' ]]] )
返回数组 非error
  • 打赏
  • 举报
回复
试试str_getcsv解析
http://php.net/manual/en/function.str-getcsv.php
用是否error来判断
coder 2012-08-22
  • 打赏
  • 举报
回复
没办法

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧