PHP fgetcsv 定義和用法(附windows與linux下兼容問題)
更新時間:2012年05月29日 16:01:17 作者:
PHP fgetcsv() 函數(shù)從文件指針中讀入一行并解析 CSV 字段。與PHP fgets() 類似,不同的是 PHP fgetcsv() 解析讀入的行并找出 CSV 格式的字段,然后返回一個包含這些字段的數(shù)組
PHP fgetcsv 定義和用法
PHP fgetcsv() 函數(shù)從文件指針中讀入一行并解析 CSV 字段。
與PHP fgets() 類似,不同的是 PHP fgetcsv() 解析讀入的行并找出 CSV 格式的字段,然后返回一個包含這些字段的數(shù)組。
fgetcsv() 出錯時返回 FALSE,包括碰到文件結(jié)束時。
注釋:從 PHP 4.3.5 起,PHP fgetcsv() 的操作是二進制安全的。
語法
提示和注釋
注釋:CSV 文件中的空行將被返回為一個包含有單個 null 字段的數(shù)組,不會被當成錯誤。
注釋:該函數(shù)對區(qū)域設(shè)置是敏感的。比如說 LANG 設(shè)為 en_US.UTF-8 的話,單字節(jié)編碼的文件就會出現(xiàn)讀取錯誤。
注釋:如果碰到 PHP 在讀取文件時不能識別 Macintosh 文件的行結(jié)束符,可以激活 auto_detect_line_endings 運行時配置選項。
例子 1
<?php
$file = fopen("contacts.csv","r");
print_r(fgetcsv($file));
fclose($file);
?>
CSV 文件:
George, John, Thomas, USA James, Adrew, Martin, USA
輸出類似:
Array ( [0] => George [1] => John [2] => Thomas [3] => USA )
例子 2
<?php
$file = fopen("contacts.csv","r");
while(! feof($file)) { print_r(fgetcsv($file));
} fclose($file);
?>
CSV 文件:
George, John, Thomas, USA James, Adrew, Martin, USA
輸出類似:
Array ( [0] => George [1] => John [2] => Thomas [3] => USA Array ( [0] => James [1] => Adrew [2] => Martin [3] => USA )
windows與linux下兼容問題
今天有問題報過來說linux平臺下 fgetcsv處理的有空數(shù)據(jù)產(chǎn)生起初以為中php版本問題,其實和版本沒有關(guān)系 在window下開發(fā)的同事都沒有問題,而自己的本本和服務(wù)器上,和使用linux系統(tǒng)的同事 都出現(xiàn)空數(shù)據(jù)的問題
google一下
設(shè)置區(qū)域:簡體中文,UTF-8編碼
setlocale(LC_ALL, 'zh_CN.UTF-8');
PHP fgetcsv() 函數(shù)從文件指針中讀入一行并解析 CSV 字段。
與PHP fgets() 類似,不同的是 PHP fgetcsv() 解析讀入的行并找出 CSV 格式的字段,然后返回一個包含這些字段的數(shù)組。
fgetcsv() 出錯時返回 FALSE,包括碰到文件結(jié)束時。
注釋:從 PHP 4.3.5 起,PHP fgetcsv() 的操作是二進制安全的。
語法
fgetcsv(file,length,separator,enclosure) |
參數(shù) | 描述 |
file | 必需。規(guī)定要檢查的文件。 |
length | 可選。規(guī)定行的最大長度。必須大于 CVS 文件內(nèi)最長的一行。 在 PHP 5 中該參數(shù)是可選的。在 PHP 5 之前是必需的。 如果忽略(在 PHP 5.0.4 以后的版本中設(shè)為 0)該參數(shù)的話,那么長度就沒有限制,不過可能會影響執(zhí)行效率。 |
separator | 可選。設(shè)置字段分界符(只允許一個字符),默認值為逗號。 |
enclosure | 可選。設(shè)置字段環(huán)繞符(只允許一個字符),默認值為雙引號。 該參數(shù)是在 PHP 4.3.0 中添加的。 |
注釋:CSV 文件中的空行將被返回為一個包含有單個 null 字段的數(shù)組,不會被當成錯誤。
注釋:該函數(shù)對區(qū)域設(shè)置是敏感的。比如說 LANG 設(shè)為 en_US.UTF-8 的話,單字節(jié)編碼的文件就會出現(xiàn)讀取錯誤。
注釋:如果碰到 PHP 在讀取文件時不能識別 Macintosh 文件的行結(jié)束符,可以激活 auto_detect_line_endings 運行時配置選項。
例子 1
復(fù)制代碼 代碼如下:
<?php
$file = fopen("contacts.csv","r");
print_r(fgetcsv($file));
fclose($file);
?>
CSV 文件:
George, John, Thomas, USA James, Adrew, Martin, USA
輸出類似:
Array ( [0] => George [1] => John [2] => Thomas [3] => USA )
例子 2
復(fù)制代碼 代碼如下:
<?php
$file = fopen("contacts.csv","r");
while(! feof($file)) { print_r(fgetcsv($file));
} fclose($file);
?>
CSV 文件:
George, John, Thomas, USA James, Adrew, Martin, USA
輸出類似:
Array ( [0] => George [1] => John [2] => Thomas [3] => USA Array ( [0] => James [1] => Adrew [2] => Martin [3] => USA )
windows與linux下兼容問題
今天有問題報過來說linux平臺下 fgetcsv處理的有空數(shù)據(jù)產(chǎn)生起初以為中php版本問題,其實和版本沒有關(guān)系 在window下開發(fā)的同事都沒有問題,而自己的本本和服務(wù)器上,和使用linux系統(tǒng)的同事 都出現(xiàn)空數(shù)據(jù)的問題
google一下
設(shè)置區(qū)域:簡體中文,UTF-8編碼
復(fù)制代碼 代碼如下:
setlocale(LC_ALL, 'zh_CN.UTF-8');
您可能感興趣的文章:
- php使用fgetcsv讀取csv文件出現(xiàn)亂碼的解決方法
- PHP中SimpleXML函數(shù)用法分析
- PHP中array_slice函數(shù)用法實例詳解
- php中in_array函數(shù)用法探究
- PHP中mysql_field_type()函數(shù)用法
- php中mt_rand()隨機數(shù)函數(shù)用法
- PHP中substr()與explode()函數(shù)用法分析
- php中convert_uuencode()與convert_uuencode函數(shù)用法實例
- php目錄遍歷函數(shù)opendir用法實例
- php中ftp_chdir與ftp_cdup函數(shù)用法
- php中fgetcsv()函數(shù)用法實例
相關(guān)文章
關(guān)于Appserv無法打開localhost問題的解決方法
安裝了Appserv時,無法打開http://localhost或是http://127.0.0.1 下面的具體的解決方法,大家可以參考下。多注意看下端口占用問題。2009-10-10PHP面向?qū)ο髮W(xué)習(xí)之parent::關(guān)鍵字
在PHP中不能定義重名的函數(shù),也包括不能再同一個類中定義重名的方法,所以也就沒有方法重載。下面這篇文章主要給大家介紹了PHP面向?qū)ο笾畃arent::關(guān)鍵字的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01php在頁面中調(diào)用fckeditor編輯器的方法
fckeditor編輯器的代碼可以寫成一個函數(shù)或者類別,直接調(diào)用,不用每次都要寫那么多代碼!2011-06-06PHP開發(fā)不能違背的安全規(guī)則 過濾用戶輸入
作為PHP程序員,特別是新手,對于互聯(lián)網(wǎng)的險惡總是知道的太少,對于外部的入侵有很多時候是素手無策的,他們根本不知道黑客是如何入侵的、提交入侵、上傳漏洞、sql 注入、跨腳本攻擊等等。2011-05-05php多次include后導(dǎo)致全局變量global失效的解決方法
這篇文章主要介紹了php多次include后導(dǎo)致全局變量global失效的解決方法,實例分析了$GLOBALS失效的原理與解決方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02