php文本分割成csv,php中解析和生成逗号分隔的数据(CSV数据)

在php中你想把数据格式花为逗号分隔的值(Comma-separted values, CSV),以便导入到电子表格或者数据库

被其他php程序所使用。

首先我们考虑php生成CSV数据,使用fputcsv()函数生成一行CSV格式的数据。看以下的实例:

$strs = array(

array( ’php中解析CSV数据’, ’2010-02-01′, ’fputcsv’, ’jwork’ ),

array( ’php中生成CSV数据’, ’2010-02-01′, ’fgetcsv’, ’jwork’ ),

array( ’php中使用流操作’, ’2010-02-01′, ’php://output’, ’jwork’ )

);

$fp = fopen( ’str.csv’, ’w' ) or die( ’Can\’t open str.csv’ );

foreach ( $strs as $str_line ) {

if ( fputcsv( $fp, $str_line ) === false ) {

die( ’Can\’t write CSV line.’ );

}

}

fclose( $fp ) or die( ’Can\’t close str.csv’ );

?>

这个php代码写入文件str.csv的数据就是CSV数据。如果想输出CSV格式的数据而不是将其写入到一个文件中,

可以使用特殊的输出流–php://output

例: 将CSV数据存放在一个

$strs = array(

array( ’php中解析CSV数据’, ’2010-02-01′, ’fputcsv’, ’jwork’ ),

array( ’php中生成CSV数据’, ’2010-02-01′, ’fgetcsv’, ’jwork’ ),

array( ’php中使用流操作’, ’2010-02-01′, ’php://output’, ’jwork’ )

);

ob_start();

$fp = fopen( ’php://output’, ’w' ) or die( ’Can\’t open php://output’ );

foreach( $strs as $str_line ) {

if ( fputcsv( $fp, $str_line ) === false ) {

die( ’Can\’t write CSV line’ );

}

}

fclose( $fp ) or die( ’Can\’t close php://output’ );

$output = ob_get_contents();

ob_end_clean();

echo $output; // $output为CSV数据的字符串

?>

在php中解析CSV数据,例如,一个由Excel或者数据库导出的文件,想把这些记录和字段抽取成一种可以在php

处理的数据格式。如果CSV数据包含再哦一个文件中,先用fopen()打开这个文件,然后使用fgetcsv()函数读

取其中的数据。

例:php从文件中读取CSV数据

$fp = fopen( ’sample.csv’, ’r' ) or die( ’Can\’t open file’ );

// 二维数组 第一维表示每行数据 第二维表示每行中每个字段的值

$arr = array();

while ( $csv_line = fgetcsv( $fp ) ) {

$arr_tmp = array();

for( $i = 0; $i 

$arr_tmp[$i] = $csv_line[$i];

}

array_push( $arr, $arr_tmp );

}

print_r( $arr );

?>

在PHP4中,必须为fgetcsv()提供第二个参数,这个参数是一个大于CSV文件中最大一个行长度的值(行尾

的空白符计算在内)。在PHP5中,这个表示行长度的参数变成了可选择的。如果不指定这个参数,fgetcsv()

函数会度取一整行的数据(在PHP5.0.4及以后的版本中,将此参数设置为0也会达到同样的效果)。当平均的

行长度超过8192字节时,如果你指定了一个明确的行长度,而不是让PHP自己去计算的话,那么PHP程序运行

速度会加快。

fgetcsv()函数的第三个参数可以用户替代逗号作为数据的分隔符。不过使用其他的分隔符会令CSV格式作

为表列数据交换的一种简便途径的效果稍微打一些折扣。

不要试图绕过fgetcsv()函数,只用读取一行然后使用explode()按逗号进行解析。CSV的实际情况要比这

种方式能够处理的格式更复杂,比如说某些字段值中包含逗号直接量,不应该将字段中包含的逗号当成是字

段的分隔符。使用fgetcsv()可以保证你和你的PHP程序避免这些不明显的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值