(PHP 4, PHP 5)
fgetcsv — 從文件指針中讀入一行并解析 CSV 字段
說明
array fgetcsv ( resource$handle
[, int $length
= 0
[, string $delimiter
= ','
[, string $enclosure
= '"'
[, string $escape
= '\'
]]]] )
和 fgets() 類似,只除了 fgetcsv() 解析讀入的行并找出 CSV 格式的字段然后返回一個包含這些字段的數(shù)組。
參數(shù)
handle
一個由 fopen()、popen() 或 fsockopen() 產(chǎn)生的有效文件指針。
length
必須大于 CVS 文件內(nèi)最長的一行。在 PHP 5 中該參數(shù)是可選的。如果忽略(在 PHP 5.0.4 以后的版本中設(shè)為 0)該參數(shù)的話,那么長度就沒有限制,不過可能會影響執(zhí)行效率。
delimiter
設(shè)置字段分界符(只允許一個字符)。
enclosure
設(shè)置字段環(huán)繞符(只允許一個字符)。
escape
設(shè)置轉(zhuǎn)義字符(只允許一個字符),默認(rèn)是一個反斜杠。
返回值
返回包含讀取字段的索引數(shù)組。
Note:
CSV 文件中的空行將被返回為一個包含有單個 null 字段的數(shù)組,不會被當(dāng)成錯誤。
Note: 在讀取在 Macintosh 電腦中或由其創(chuàng)建的文件時, 如果 PHP 不能正確的識別行結(jié)束符,啟用運行時配置可選項 auto_detect_line_endings 也許可以解決此問題。
如果提供了無效的文件指針,fgetcsv() 會返回 NULL
。
其他錯誤,包括碰到文件結(jié)束時返回 FALSE
,。
更新日志
版本
說明
5.3.0
增加了 escape
參數(shù)。
4.3.5
現(xiàn)在起 fgetcsv() 的操作是二進(jìn)制安全的。
4.3.0
增加了 enclosure
參數(shù)。
范例
Example #1 讀取并顯示 CSV 文件的整個內(nèi)容
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />n";
}
}
fclose($handle);
}
?>
注釋
Note:
該函數(shù)對區(qū)域設(shè)置是敏感的。比如說 LANG 設(shè)為 en_US.UTF-8 的話,單字節(jié)編碼的文件就會出現(xiàn)讀取錯誤。
參見
str_getcsv() - 解析 CSV 字符串為一個數(shù)組 explode() - 使用一個字符串分割另一個字符串 file() - 把整個文件讀入一個數(shù)組中 pack() - Pack data into binary string fputcsv() - 將行格式化為 CSV 并寫入文件指針