回答
從PHP 5.3開始,您可以使用str_getcsv()來閱讀使用不同分隔符的單獨行。
$someCondition = someConditionToDetermineTabOrComma();
$delimiter = $someCondition ? "," : "\t";
$fp = fopen('mydata.csv', 'r');
while (!feof($fp))
{
$line = fgets($fp, 2048);
$data = str_getcsv($line, $delimiter);
doSomethingWithData($data);
}
fclose($fp);
讀取整個文件,或逐行讀取並使用拆分進行分割。
在那裏你可以包含任意分隔符的正則表達式。我沒有PHP在這裏測試一個聲明,但php.net - >搜索split()。 你還有一個關於正則表達式的評論。
但這種方法將消除getcsv的外殼的功能,有可能擊敗所有的目的,但最簡單的CSV文件。 – dimo414 2009-09-03 09:01:10
您可以指定fgetcsv分隔符()。這是閱讀製表符分隔文件的一個例子,
while (($data = fgetcsv($handle, 1000, "\t")) !== FALSE) {
...
}
是的,但它也可以是csv文件。問題是如何確定它是否是csv或tab delemited。 – veli 2009-09-03 10:30:04
這裏是會讀mydata.txt
CSV字段
$tab = "\t";
$fp = fopen('mydata.txt', 'r');
while (!feof($fp))
{
$line = fgets($fp, 2048);
$data_txt = str_getcsv($line, $tab);
//Get First Line of Data over here
print_r($data_txt);
exit;
}
fclose($fp);
這是一個不錯的。 – 2016-10-24 18:18:50
這裏是我加入到我的事業庫以備將來使用功能的例子。我從NSSec's answer得出它。
該解決方案允許您指定是否要將第一行用作數組的鍵。我可能會添加傳遞數組以用於$ first_line_keys參數的鍵的功能。
/**
* Converts a CSV file into an array
* NOTE: file does NOT have to have .csv extension
*
* $file - path to file to convert (string)
* $delimiter - field delimiter (string)
* $first_line_keys - use first line as array keys (bool)
* $line_lenght - set length to retrieve for each line (int)
*/
public static function CSVToArray($file, $delimiter = ',', $first_line_keys = true, $line_length = 2048){
// file doesn't exist
if(!file_exists($file)){
return false;
}
// open file
$fp = fopen($file, 'r');
// add each line to array
$csv_array = array();
while(!feof($fp)){
// get current line
$line = fgets($fp, $line_length);
// line to array
$data = str_getcsv($line, $delimiter);
// keys/data count mismatch
if(isset($keys) && count($keys) != count($data)){
// skip to next line
continue;
// first line, first line should be keys
}else if($first_line_keys && !isset($keys)){
// use line data for keys
$keys = $data;
// first line used as keys
}else if($first_line_keys){
// add as associative array
$csv_array[] = array_combine($keys, $data);
// first line NOT used for keys
}else{
// add as numeric array
$csv_array[] = $data;
}
}
// close file
fclose($fp);
// nothing found
if(!$csv_array){
return array();
}
// return csv array
return $csv_array;
} // CSVToArray()
$filePath = "somefile.txt";
$delimiter = "\t";
$file = new \SplFileObject($filePath);
while (!$file->eof()) {
$line = $file->fgetcsv($delimiter);
print_r($line);
}
請爲您的答案添加一些解釋,以使其對其他用戶更有價值。 – wmk 2017-02-02 19:39:08
- 1. 使用phpexcel逗號或製表符分隔符讀取文本文件
- 2. 從逗號分隔的文本文件中讀取數組
- 3. 從逗號分隔的文本文件中讀取
- 4. 讀逗號分隔的文本文件
- 5. 使用php從文本文件中讀取逗號分隔值
- 6. 從C中的文件中讀取逗號分隔的數字
- 7. 從Python中的文件中讀取逗號分隔的元組
- 8. 從文本框中讀取以逗號分隔的行
- 9. 從逗號分隔文本創建表
- 10. 從逗號分隔的數據文件中讀取列C++
- 11. 如何從逗號分隔的文件中讀取值?
- 12. C#閱讀從逗號分隔文本文件到Windows窗體
- 13. 製表符分隔或逗號分隔輸出中的新行
- 14. 讀取存儲在csv文件中的rgb值,用逗號分隔符分隔
- 15. 從逗號分隔值文件中讀取
- 16. Qt讀取製表符分隔文本文件的特定列
- 17. 需要腳本來將逗號分隔文件轉換爲製表符分隔
- 18. 如何從冒號(:)讀取C#中的分隔文本文件
- 19. 在python中用逗號分隔逗號分隔的csv文件
- 20. 製表符分隔爲逗號UNIX中的分隔文件 - 一個班輪?
- 21. 閱讀包含python中的特殊字符的逗號分隔文本文件
- 22. Python - 從文本文件中讀取逗號分隔的值,然後將結果輸出到文本文件
- 23. 讀取文件包含在Python列表和逗號分隔
- 24. MVC中的逗號分隔和分隔符文本字段4
- 25. 逗號和製表符分隔的tsv文件
- 26. BULK INSERT製表符分隔的文件 - 用逗號描述
- 27. SAS從包含製表符和逗號分隔符的文件中讀取數據
- 28. 從逗號分隔的文件中刪除額外的逗號
- 29. 在Fortran中逐行讀取以逗號分隔的文本文件
- 30. 將逗號分隔的文件讀取到整數數組中
我來到了類似的解決方案。我閱讀文件並在其中搜索標籤;如果沒有找到,我認爲分隔符是逗號。然後使用getscv作爲php的版本是5.2。雖然我看到這方面存在一些缺陷,但我想不出更好的辦法。 – veli 2009-09-03 09:53:03
也許在第一行計算製表符和逗號(以及其他潛在分隔符),然後將它們與第二行進行比較等等。無論哪一個最一致的是你可能的分隔符。不幸的是,這是一種雙通的解決方案,但是當你有這樣一個未知的時候,這往往是這樣的。 – Rikki 2013-07-13 17:44:10