你有一些逗号分隔符格式的文件 (CSV格式),例如那些从数据库或者从 excel 中导出的数据,你想把这些数据解析成能用 PHP 操纵处理的数据格式。
如果你的 CSV 格式的数据是在一个文件当中的 (或者来自一个 URL),你可以先用 fopen()
函数打开一个文件,然后用 fgetcsv()
函数去读取那些数据,【例1-30】展示了如何将 CSV 格式的数据输出到 HTML 的表格中。
【例1-30】
$fp = fopen($filename,'r') or die("can't open file");
print "<table>\n";
while($csv_line = fgetcsv($fp)) {
print '<tr>';
for ($i = 0, $j = count($csv_line); $i < $j; $i++) {
print '<td>'.htmlentities($csv_line[$i]).'</td>';
}
print "</tr>\n";
}
print "</table>\n";
fclose($fp) or die("can't close file");
默认情况下,fgetcsv()
函数会将每一行的数据全部读取。但是,如果你的数据每一行的平均长度大于 8192 字节,同时你又想让你的程序运行的更快,那么你最好是制定一下你每一行的长度而不是让 PHP 自己去计算长度。要实现上面说的这种制定行的长度限制,你需要传递一个数字给 fgetcsv()
函数的第二个参数,这个数字是一个比你的 CSV 文件最大行的长度还要大的数字 (计算长度的时候不要忘记了行尾的空白数目~)。如果你传递了 0
做为第二个参数那么 PHP 将会按照默认的方式去处理。
还有一点就是,fgetcsv()
函数可以有第三个参数,那是一个分隔符,你可以指定一个分隔符,而不是用默认的逗号去分隔。可是如果使用了一个不一样的符号去分隔 CSV 数据,多少有一点违背 CSV 格式数据初衷的意思,毕竟 CVS 格式的数据就是为了做数据交换的,统一的分隔符就是逗号 ,
。
不要尝试绕过 fgetcsv()
函数,妄想直接去读取数据的每一行并且用 explode()
函数并且用逗号 ,
分隔然后输出一个数组。CSV 文件比想象当中的更加复杂,因为 CSV 文件可以去处理字段值的逗号。举个例子,在 CSV 文件中,数据文字中的逗号不会被当作字段分隔的逗号 (如果你用 explode()
函数的话你是无法去分辨出文字当中的逗号和字段中的逗号的)。使用 fgetcsv()
函数的话,就可以让你的你的代码避免这样的细微错误。
fgetcsv
函数的参考手册
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )