【问题标题】:Looking for alternative PHP fgetcsv() function to handlle textfiles寻找替代 PHP fgetcsv() 函数来处理文本文件
【发布时间】:2010-11-09 08:40:59
【问题描述】:

我正在创建一个 Web 界面以使用户能够将数据从文本文件导入 mysql 数据库。

我想知道是否有人知道是否有另一个函数来处理文本文件,因为到目前为止我所看到的是用于处理 csv 文件的 fgetcsv()。另一种方法可能是将文本文件转换为我不想要的 csv 文件。有没有其他办法解决这个问题?

【问题讨论】:

  • 好的,您的文件现在是 .txt,但您的新文件是什么格式?我的意思是, .txt 里面是什么?每行都有一个mysql行?数据被什么东西隔开?每个 txt 都会有所不同。请更具体一点。
  • @Deceze,我一直认为 fgetcsv() 将严格用于 .csv 文件,因此我希望要求另一个函数来处理正在使用的 .txt 文件。 @Chouchenous,正在使用的文本文件中的数据是逗号分隔的,它们不是 mysql 行。在删除了一些我认为与函数接受的文件扩展名有关的错误之后,我使用 fgetcsv() 为 .txt 文件运行了脚本,它工作了。这意味着 fgetcsv 的使用不严格还是什么?附在函数名上的csv的本质是什么?

标签: php mysql


【解决方案1】:

fgetcsv() 替换为fgets(),它从文件指针中获取一行而不是CSV“行”。

【讨论】:

  • 谢谢 Pelle,我会尝试使用它,看看会发生什么。
【解决方案2】:

这意味着 fgetcsv 的使用不严格还是什么?附在函数名上的csv的本质是什么?

CSV 表示“comma-separated values”。这意味着有一行包含逗号的文本,逗号分隔值。例如:

Value 1,Value 2,Value 3

这就是它的全部内容。这是一种以语言中立的方式保存平面数组或数据行的或多或少标准化的方法。 (有一些细节,例如,保存本身有逗号的值,但这就是它的要点。像fgetcsv 这样的函数可以处理这些细节,而不必每次都重新发明轮子。 )
与上述等效的 PHP 原生代码为 array('Value 1', 'Value 2', 'Value 3')

fgetcsv 所做的只是从文件中一次读取一行,找到其中的逗号,然后返回一个它找到的数据数组。它对您告诉它读取的任何文件执行此操作,它一点也不关心文件扩展名。如果该行中没有逗号,它不会做很多事情,只会给你一个单一的值。 CSV 格式本身非常简单,甚至没有真正的标准,所以没有什么fgetcsv 可以非常“严格”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多