php将文本文件转换csv输出的方法


Posted in PHP onDecember 31, 2014

本文实例讲述了php将文本文件转换csv输出的方法。分享给大家供大家参考。具体实现方法如下:

这个类提供了转换成固定宽度的CSV文件,快速,简便的方法,它可将SplFileObject用于执行迭代,使它非常高效的一个迭代只知道当前成员,期权是提供给指定行字符和字段分隔符结束,This from CSV files.这个类是特别有用的,如果数据需要来自一个固定宽度的文件,并插入到数据库中,因为大多数的数据库支持从CSV文件中的数据输入.

这一类的方便的功能是可以跳过字段如果不是在输出需要,该领域的阵列提供,提供了一个键/值对,与主要持有的价值偏移,或启动领域的地位,和值包含的宽度,或字段的长度,For example.例如,12 =“10是一个领域,在12位和宽度或字段的长度为10个字符开始.

底的行字符默认成“ n”,而是可以设置为任何字符。

分隔符默认为一个逗号,但可以设置为任何字符,或字符。

从文件的输出可以直接使用,写入一个文件,到数据库或任何其他目的插入.

PHP实例代码如下:

<?php 

/**  

* Class to convert fixed width files into CSV format  

* Allows to set fields, separator, and end-of-line character  

*  

* @author Kevin Waterson  

* @url http://phpro.org  

* @version $Id$  

*  

*/  

class fixed2CSV extends SplFileObject  

{  

/**  

*  

* Constructor, duh, calls the parent constructor  

*  

* @access       public  

* @param    string  The full path to the file to be converted  

*  

*/  

public function __construct ( $filename )  

{  

parent :: __construct ( $filename );  

} 

 

/*  

* Settor, is called when trying to assign a value to non-existing property  

*  

* @access    public  

* @param    string    $name    The name of the property to set  

* @param    mixed    $value    The value of the property  

* @throw    Excption if property is not able to be set  

*  

*/  

public function __set ( $name , $value )  

{  

switch( $name )  

{  

case 'eol' :  

case 'fields' :  

case 'separator' :  

$this -> $name = $value ;  

break; 

 

default:  

throw new Exception ( "Unable to set $name " );  

}  

} 

 

/**  

*  

* Gettor This is called when trying to access a non-existing property  

*  

* @access    public  

* @param    string    $name    The name of the property  

* @throw    Exception if proplerty cannot be set  

* @return    string  

*  

*/  

public function __get ( $name )  

{  

switch( $name )  

{  

case 'eol' :  

return " " ; 

 

case 'fields' :  

return array(); 

 

case 'separator' :  

return ',' ; 

 

default:  

throw new Exception ( " $name cannot be set" );  

}  

} 

 

/**  

*  

* Over ride the parent current method and convert the lines  

*  

* @access    public  

* @return    string    The line as a CSV representation of the fixed width line, false otherwise  

*  

*/  

public function current ()  

{  

if( parent :: current () )  

{  

$csv = '' ;  

$fields = new cachingIterator ( new ArrayIterator ( $this -> fields ) );  

foreach( $fields as $f )  

{  

$csv .= trim ( substr ( parent :: current (), $fields -> key (), $fields -> current ()  ) );  

$csv .= $fields -> hasNext () ? $this -> separator : $this -> eol ;  

}  

return $csv ;  

}  

return false ;  

}  

} // end of class 

?>

 
Example Usage示例用法
<?php 

try  

{  

/*** the fixed width file to convert ***/  

$file = new fixed2CSV ( 'my_file.txt' ); 

 

/*** The start position=>width of each field ***/  

$file -> fields = array( 0 => 10 , 10 => 15 , 25 => 20 , 45 => 25 ); 

 

/*** output the converted lines ***/  

foreach( $file as $line )  

{  

echo $line ;  

} 

 

/*** a new instance ***/  

$new = new fixed2CSV ( 'my_file.txt' ); 

 

/*** get only first and third fields ***/  

$new -> fields = array( 0 => 10 , 25 => 20 ); 

/*** output only the first and third fields ***/  

foreach( $new as $line )  

{  

echo $line ;  

} 

 

}  

catch( Exception $e )  

{  

echo $e -> getMessage ();  

} 

?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
php 删除一个数组中的某个值.兼容多维数组!
Feb 18 PHP
PHP中文分词 自动获取关键词介绍
Nov 13 PHP
php生成缩略图填充白边(等比缩略图方案)
Dec 25 PHP
PHP判断是否有Get参数的方法
May 05 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
CodeIgniter删除和设置Cookie的方法
Apr 07 PHP
php删除数组中重复元素的方法
Dec 22 PHP
PHP实现基于文本的摩斯电码生成器
Jan 11 PHP
php中namespace use用法实例分析
Jan 22 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
Aug 17 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
19个Android常用工具类汇总
Dec 30 #PHP
php+ajax实现文章自动保存的方法
Dec 30 #PHP
php实现监控varnish缓存服务器的状态
Dec 30 #PHP
php在线解压ZIP文件的方法
Dec 30 #PHP
php站内搜索关键词变亮的实现方法
Dec 30 #PHP
php使用PDO操作MySQL数据库实例
Dec 30 #PHP
discuz目录文件资料汇总
Dec 30 #PHP
You might like
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
js版本A*寻路算法
2006/12/22 Javascript
JS 建立对象的方法
2007/04/21 Javascript
JS 按钮点击触发(兼容IE、火狐)
2013/08/07 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
js实现两点之间画线的方法
2015/05/12 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
vuejs在解析时出现闪烁的原因及防止闪烁的方法
2016/09/19 Javascript
Require.js的基本用法详解
2017/07/03 Javascript
Vue的移动端多图上传插件vue-easy-uploader的示例代码
2017/11/27 Javascript
javascript的this关键字详解
2019/05/20 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
基于vue--key值的特殊用处详解
2020/07/31 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python导出hive数据表的schema实例代码
2018/01/22 Python
Python运维自动化之nginx配置文件对比操作示例
2018/08/29 Python
Python数据可视化图实现过程详解
2020/06/12 Python
Python爬虫之Selenium实现关闭浏览器
2020/12/04 Python
印尼穆斯林时尚购物网站:Hijabenka
2016/12/10 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
审计工作个人的自我评价
2013/12/25 职场文书
会计学专业自荐信
2014/06/25 职场文书
大学生见习报告总结
2014/11/04 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
会计人员岗位职责
2015/02/03 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书