Gut*_*tsy 5 php regex csv file-upload
我想确保我们的客户上传的CSV文件确实是PHP中的CSV文件.我正在处理上传本身就好了.我并不担心恶意用户,但我担心会尝试上传Excel工作簿.除非我弄错了,否则Excel工作簿和CSV仍然可以具有相同的MIME,因此检查不够好.
是否有一个正则表达式可以处理验证CSV文件真的是一个CSV文件?(我不需要解析......这就是PHP的fgetcsv()所用的.)我见过几个,但是它们之后通常会出现"它不适用于案例X"之类的评论.
有没有其他更好的方法来处理这个?
(我希望CSV能够保存名字/姓氏,部门名称......没什么特别的.)
与其他文件格式不同,CSV在文件头中没有任何字节.它立即开始实际数据.
我没有看到任何方法,除了实际解析它,并计算结果中是否有预期的列数.
读取确定第一行所需的字符数可能就足够了(=直到第一个换行符).
您可以编写一个 RE,让您猜测该文件是否是有效的 CSV - 但也许更好的方法是尝试解析该文件,就像它是 CSV 一样(使用您的 fgetcsv() 调用),并假设它是如果调用失败则不是有效的?
换句话说,查看文件是否为有效 CSV 文件的最佳方法是尝试对其进行解析,并假设如果解析失败,则它不是 CSV!