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 escape URL编码
Dec 10 PHP
php session安全问题分析
Jun 24 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP+Apache环境中如何隐藏Apache版本
Nov 24 PHP
PHP优化之批量操作MySQL实例分析
Apr 23 PHP
PHP大文件分割分片上传实现代码
Dec 09 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
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
twig模板常用语句实例小结
2016/02/04 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
js和as的稳定传值问题解决
2013/07/14 Javascript
bootstrap布局中input输入框右侧图标点击功能
2016/05/16 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
2017/01/26 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
jquery实现异步文件上传ajaxfileupload.js
2020/10/23 jQuery
[03:44]2015国际邀请赛选手档案—Cloud9.NoTail
2015/07/28 DOTA
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
python获取豆瓣电影简介代码分享
2014/01/16 Python
python显示天气预报
2014/03/02 Python
Python实现简单http服务器
2018/04/12 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
Python使用Selenium实现淘宝抢单的流程分析
2020/06/23 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
LORAC官网:美国彩妆品牌
2019/08/27 全球购物
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
《绿色蝈蝈》教学反思
2014/03/02 职场文书
工作会议主持词
2014/03/17 职场文书
学生个人自我鉴定范文
2014/03/28 职场文书
搞笑爱情保证书
2014/04/29 职场文书
导游词之南京栖霞山
2019/10/18 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python