`
xiaoshuq
  • 浏览: 4291 次
  • 性别: Icon_minigender_1
  • 来自: 山东
最近访客 更多访客>>
社区版块
存档分类
最新评论

php解析特定格式的文本

    博客分类:
  • php
阅读更多
解析文本文件格式如下

id name
1,peter
2,leo
6,wang

实现目的可以修改任一行的值(逗号后面) 增加新值 删除

<?php

/*
 *@data 2010-9-6
 *@author skipify
 * */
class parse_text{
    public $ffile;
    public $aarray;
    public $vars = array();
    public $delimiter=",";//分隔的字符串
    public $istrim=True;
    public function __construct($file){
        $this->ffile = $file;
        if(file_exists($this->ffile)){
            $this->aarray = file($this->ffile);
            $this->aarray = array_slice($this->aarray,1);
            $this->parse();
        }else{
            $this->aarray=array();
        }
    }
    /*
     *解析文件到一个数组
     * */
    private function parse(){
        if($this->aarray){
            foreach($this->aarray as $val){
                $lines = explode($this->delimiter,$val);
                if($this->istrim){
                    $lines[0] = trim($lines[0]);
                    $lines[1] = trim($lines[1]);
                }// 如果需要去除空白则设置为True
                if($lines[0] && $lines[1])
                    $this ->vars[$lines[0]] = str_replace("\n","",$lines[1]);
            }
        }else{
                    $this ->vars = array();
        }
    }
    /*
     *按照键值获取数据
     * */
    public function get($k){
        if(isset($this->vars[$k]))
            return $this->vars[$k];
            return false;
    }
    /*
     *按照键值删除数据
     * */
    public function delete($k){
        unset($this->vars[$k]);
        return $k;
    }
    /*
     *删除第一个发现的值为$v的行
     * */
    public function deleteByValue($v){
        $key = array_search($v,$this->vars);
        unset($this->vars[$key]);//删除第一个发现的值为$v的行
    }
    /*
     *键值对应设置修改
     * */
    public function set($k,$v){
        if($k && $v)
            $this->vars[$k]=$v;
        return $k;
    }
    /*
     *根据关联数组批量设置修改
     * */
    public function setGroup($a){
        if(!is_array($a)){
            return false;
        }
        foreach($a as $k=>$v){
            $this->set($k,$v);
        }
    }
    /*
     *键值对应添加新行 已定义的则覆盖
     * */
    public function add($k,$v){
        if($k && $v)
            $this->vars[$k]=$v;//如果原来存在此键值则被覆盖
        return $k;
    }

    /*
     *关联数组添加新行  索引为id 值为name
     * */
    public function addGroup($a){
        if(!is_array($a)){
            return false;
        }
        foreach($a as $k=>$v){
            $this->add($k,$v);
        }
    }
    /*
     *执行操作保存文件
     * */
    public function todo(){
        $lines = array(0=>"id name");
        foreach($this->vars as $k =>$v){
            $lines[] = $k.$this->delimiter.$v;
        }
        $content = implode("\n",$lines);
        $f = fopen($this->ffile,"w");
        fwrite($f,$content);
        fclose($f);
    }

}

$t = new parse_text("test.txt");
$t->add("1","a");
$t->todo();//执行完新操作之后必须调用此方法以保存文件
?>



分享到:
评论

相关推荐

    PHP解析shapefile文件.zip

    标题中的“PHP解析shapefile文件”指的是使用PHP编程语言处理shapefile格式的地理空间数据。Shapefile是一种常见的矢量地理数据格式,常用于存储点、线、多边形等地理对象,广泛应用于GIS(地理信息系统)领域。PHP...

    一个PHP邮件mime解析器

    压缩包子文件的文件名"zbateson-mail-mime-parser-63bedd7"可能表示这是zbateson开发的邮件MIME解析器的一个特定版本。zbateson可能是一位开源开发者或团队,而"63bedd7"通常是Git仓库中的一个提交哈希,代表代码库...

    php dom 解析类和函数文件封装

    在给定的“php dom 解析类和函数文件封装”主题中,我们可以深入探讨PHP如何利用DOM进行HTML解析。 `simple_html_dom`是PHP的一个开源库,它简化了HTML文档的处理,使得开发者可以像操作DOM节点一样操作HTML。`...

    PHP解析HTML代码库

    本文将深入探讨"PHP解析HTML代码库",包括其核心概念、用途以及如何使用。 1. **核心概念**: - **DOM(Document Object Model)**: DOM是HTML和XML文档的标准表示方法,它将文档视为一个可编程的对象树。PHP中的`...

    二维码解析php类库

    1. **读取图像**:首先,类库需要能够读取二维码图像文件,这通常是一个PNG、JPEG或BMP格式的图片。通过GD库或Imagick扩展,类库可以加载图像并准备进行分析。 2. **预处理**:图像可能需要进行一些预处理步骤,如...

    1_M3U8视频解析php_fireplaceqmj_strong885_视频解析_tightlyoka_

    M3U8文件本质上是一个文本文件,包含了媒体文件的URL列表。每个URL指向一个TS(Transport Stream)分片,这些分片按顺序播放,形成连续的视频流。M3U8还支持加密、编码格式、分辨率等元数据的描述,使得它能够适应...

    一个好用的php模版解析类

    而`php模版解析类`文件很可能是实现这个功能的PHP源代码,我们可以查看其内部实现,学习如何编写这样的解析类,或者直接将其集成到我们的项目中。 通过深入理解并应用这样的PHP模板解析类,我们可以提高开发效率,...

    PHP解析XML文档

    ### PHP解析XML文档知识点 #### 一、XML简介与特性 - **定义**:XML(Extensible Markup Language),即可扩展标记语言,是一种用于描述数据的标记语言,它允许用户自定义标签,使得数据的组织更为灵活且具有高度...

    xw_最简单的二次解析源码内附一次解析接口_二次解析站_源码

    一次解析就是通过特定算法或工具解密这些URL,将其转化为可播放的形式。在这个案例中,接口地址`http://localhost/xw.php?url=视频地址`就是一次解析的入口,传入视频的原始URL,它将返回适合播放的链接。 接下来,...

    php技术 解析外部邮件代码

    首先,我们要理解PHP解析邮件的基本原理。这通常涉及到IMAP(Internet Message Access Protocol)和POP3(Post Office Protocol version 3)协议,它们用于从邮件服务器接收邮件。在PHP中,`imap`函数库提供了与邮件...

    php中用来解析xml的类

    本篇文章将详细介绍一个PHP XML解析类的使用,以及如何通过该类来解析XML文件。 首先,我们要了解PHP提供的XML解析方法。PHP提供了两种主要的XML解析方式:DOM(Document Object Model)和SAX(Simple API for XML...

    php模板解析类文件缓存

    2. **编译模板**:当模板被首次请求或者缓存过期时,Smarty会读取模板文件,通过内置的模板语言解析器,将模板中的SMARTY语句(如{$var})转换为PHP代码。 3. **生成缓存文件**:编译完成后,Smarty会将生成的PHP...

    php版html解析器

    例如,可以轻松获取特定ID或类名的元素,或者查找包含特定文本的元素。 2. 选择器支持:类似于jQuery的选择器语法,可以方便地定位到HTML元素。这使得开发者能快速找到目标元素,无需遍历整个DOM树。 3. 解析配置...

    PHP 读取 Android APK XML文件,无需JDK

    APK文件是基于Java的,通常需要JDK(Java Development Kit)来解析其内部结构,但在这个特定情况下,我们将学习如何利用PHP的内置功能来读取APK中的XML文件,从而避免依赖JDK。 首先,我们要了解XML文件在APK中的...

    蓝奏云直链解析源码带模块,蓝奏云解析

    3. **解析响应**:发送请求后,服务器会返回一个包含文件信息的响应,通常是JSON格式。解析这个响应以获取下载链接和其他相关数据,例如文件大小、文件名等。 4. **生成直链**:一旦获得所需信息,源码中的模块可能...

    php100-96PHP程序员经典面试&笔试题目解析(上).rar

    :“php100-96PHP程序员经典面试&笔试题目解析(上).rar” 这个标题表明这是一个关于PHP程序员面试和笔试题目的资源集合,由“php100”可能是一个教育平台或者教程系列,而“96”可能是表示题目数量或者特定版本号...

    新版影视源码完整版,PHP在线视频影视系统带解析接口

    - `web.config`:这通常是ASP.NET环境下的配置文件,但在这个PHP项目中,可能是用来存储特定环境配置或者某种替代性的配置信息。 - `editor`:可能包含文本编辑器的相关代码,用于编辑和发布内容。 综上所述,这个...

    XyPlayer_v4.1影视解析源码,xyplayer解析官网,PHP

    影视解析源码是XyPlayer的核心部分,它负责将视频链接转化为可以直接播放的格式。这种技术通常涉及HTTP或HTTPS请求,以及对响应数据的处理,例如M3U8、RTMP、HLS等流媒体协议的解析。源码中可能包含对不同视频源的...

    HTML5PHP一个HTML5解析和序列化PHP库

    1. **解析HTML5文档**:将HTML5字符串或文件解析为DOMDocument对象,方便进一步处理。 2. **创建和修改元素**:动态创建新的HTML元素,或者修改现有元素的属性和内容。 3. **选择和遍历元素**:使用XPath或CSS选择器...

    音乐解析源码,无需数据库

    标题中的“音乐解析源码,无需数据库”表明这是一个关于音乐解析的网站源代码,它不依赖于任何数据库系统,这通常意味着源代码可能使用了静态数据处理或存储方式,如文本文件、JSON或XML,或者它可能直接从外部API...

Global site tag (gtag.js) - Google Analytics