PHP fgetcsv 定義和用法(附windows與linux下兼容問題)
更新時間:2012年05月29日 16:01:17 作者:
PHP fgetcsv() 函數從文件指針中讀入一行并解析 CSV 字段。與PHP fgets() 類似,不同的是 PHP fgetcsv() 解析讀入的行并找出 CSV 格式的字段,然后返回一個包含這些字段的數組
PHP fgetcsv 定義和用法
PHP fgetcsv() 函數從文件指針中讀入一行并解析 CSV 字段。
與PHP fgets() 類似,不同的是 PHP fgetcsv() 解析讀入的行并找出 CSV 格式的字段,然后返回一個包含這些字段的數組。
fgetcsv() 出錯時返回 FALSE,包括碰到文件結束時。
注釋:從 PHP 4.3.5 起,PHP fgetcsv() 的操作是二進制安全的。
語法
提示和注釋
注釋:CSV 文件中的空行將被返回為一個包含有單個 null 字段的數組,不會被當成錯誤。
注釋:該函數對區(qū)域設置是敏感的。比如說 LANG 設為 en_US.UTF-8 的話,單字節(jié)編碼的文件就會出現讀取錯誤。
注釋:如果碰到 PHP 在讀取文件時不能識別 Macintosh 文件的行結束符,可以激活 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處理的有空數據產生起初以為中php版本問題,其實和版本沒有關系 在window下開發(fā)的同事都沒有問題,而自己的本本和服務器上,和使用linux系統的同事 都出現空數據的問題
google一下
設置區(qū)域:簡體中文,UTF-8編碼
setlocale(LC_ALL, 'zh_CN.UTF-8');
PHP fgetcsv() 函數從文件指針中讀入一行并解析 CSV 字段。
與PHP fgets() 類似,不同的是 PHP fgetcsv() 解析讀入的行并找出 CSV 格式的字段,然后返回一個包含這些字段的數組。
fgetcsv() 出錯時返回 FALSE,包括碰到文件結束時。
注釋:從 PHP 4.3.5 起,PHP fgetcsv() 的操作是二進制安全的。
語法
fgetcsv(file,length,separator,enclosure) |
參數 | 描述 |
file | 必需。規(guī)定要檢查的文件。 |
length | 可選。規(guī)定行的最大長度。必須大于 CVS 文件內最長的一行。 在 PHP 5 中該參數是可選的。在 PHP 5 之前是必需的。 如果忽略(在 PHP 5.0.4 以后的版本中設為 0)該參數的話,那么長度就沒有限制,不過可能會影響執(zhí)行效率。 |
separator | 可選。設置字段分界符(只允許一個字符),默認值為逗號。 |
enclosure | 可選。設置字段環(huán)繞符(只允許一個字符),默認值為雙引號。 該參數是在 PHP 4.3.0 中添加的。 |
注釋:CSV 文件中的空行將被返回為一個包含有單個 null 字段的數組,不會被當成錯誤。
注釋:該函數對區(qū)域設置是敏感的。比如說 LANG 設為 en_US.UTF-8 的話,單字節(jié)編碼的文件就會出現讀取錯誤。
注釋:如果碰到 PHP 在讀取文件時不能識別 Macintosh 文件的行結束符,可以激活 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處理的有空數據產生起初以為中php版本問題,其實和版本沒有關系 在window下開發(fā)的同事都沒有問題,而自己的本本和服務器上,和使用linux系統的同事 都出現空數據的問題
google一下
設置區(qū)域:簡體中文,UTF-8編碼
復制代碼 代碼如下:
setlocale(LC_ALL, 'zh_CN.UTF-8');
相關文章
PHP開發(fā)不能違背的安全規(guī)則 過濾用戶輸入
作為PHP程序員,特別是新手,對于互聯網的險惡總是知道的太少,對于外部的入侵有很多時候是素手無策的,他們根本不知道黑客是如何入侵的、提交入侵、上傳漏洞、sql 注入、跨腳本攻擊等等。2011-05-05php多次include后導致全局變量global失效的解決方法
這篇文章主要介紹了php多次include后導致全局變量global失效的解決方法,實例分析了$GLOBALS失效的原理與解決方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-02-02