`
qzriso
  • 浏览: 242639 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

利用PHP和PEAR动态创建和编辑TAR文档

    博客分类:
  • php
阅读更多

如果你曾为你的UNIX系统下载过widget,那么你肯定遇到过TAR压缩文件。在UNIX系统中磁带归档文件格式常用于打包多个文件,以便于分发。

这种格式的流行不仅由于在所有UNIX系统中都存在该格式的创建工具,还因为在实际应用中,它便于保存归档文件的目录结构、许可信息、用户和组信息等。

PHP中有大量的内建函数和可连接的扩展库,可用于几乎所有文件格式。特别是它可以通过PEAR的Archive_Tar类读取和创建TAR文档。在本文中,我们将向你说明这个类的行为,并演示开发人员是如何利用它动态地创建,编辑和显示TAR文档二手电脑回收。

在这里我将假设你有一个工作数据库和安装了PHP,并且正确的安装了PEAR的Archive_Tar类。

注:你可以直接从网上安装PEAR 的Archive_Tar类包,或者从网上下载安装。

创建TAR文档

让我们从一个简单的例子开始:二手电脑回收动态创建包含几个文件的TAR文档。使用下面的脚本:
列表 A

<php
include ('Archive/Tar.php');// import class

$obj = new Archive_Tar('dummy.tar'); // name of archive

$files = array('mystuff/ad.gif',
'mystuff/alcon.doc',
'mystuff/alcon.xls'); // files to store in archive

if ($obj->create($files)) {
echo 'Created successfully!';
} else {
echo 'Error in file creation';
}
>

这个脚本相当简单,但是还是值得具体看一下:

首先,创建Archive_Tar类的一个实例,初始化创建文档的路径和文件名。在本例中,文件名是dummy.tar,存于当前目录。

其次,列出归档的所有文件,包括它们的磁盘地址,存于一个PHP数组中。脚本(更准确的说是运行脚本的用户)必须拥有访问这些磁盘地址的许可权,否则文档创建过程就会失败。

最后,creat()方法将所有的文件压缩到单个TAR文档。这个方法接受输入的文件名数组,返回一个布尔值表明文档是否成功创建。记住脚本必须拥有将文件写入命名磁盘地址的许可权,否则,creat()方法就无法使用,文档创建就会失败。

应用上面例子中的脚本,修改$files数组的内容以反映你的本地系统配置,在命令行或者浏览器中试着执行它,如果一切正常的话,脚本将会查找并读取这些文件到一个命名为dummy.tar的TAR文档中。

查看TAR文档内容

如何查看已经存在的TAR文件的内部信息呢?Archive_Tar类有一个listContent()方法,该方法可以查看一个TAR包中的每个组件的详细信息。列表B显示了如何使用它:

列表 B
<php
include ('Archive/Tar.php');// import class

$obj = new Archive_Tar('dummy.tar'); // name of archive

$files = $obj->listContent();// array of file information

foreach ($files as $f) {
foreach ($f as $k => $v) {
echo "$k: $vn";
}
echo "n";
}
>

listContent()方法的输出是一个结构化数组,每个数组元素代表文档中的一个文件。典型的是,每个元素有相应文件的名字信息,它的许可模式,所有者和组用户的ID,状态,大小和上一次修改的时间。通过一个循环可以很容易的提取这些信息,然后再对格式稍作修改使它根据表达性,像上面的例子中提到的国内旅游。下面是一个输入示例:

校验和:3872

文件名:mystuff/alcon.doc

模式:33206

用户ID:433

组ID:106

大小:41472

时间:1140358031

向已经存在的TAR文档中添加文件

由于我们大家的健忘性,有时可能忘记某个文件,Archive_Tar 类通过add()方法提供了
向已经存在的文档中添加新文件的能力。为了演示停车场管理系统,我们再回到上文的dummy.tar文档,试着给它添加一个新文件(列表C):

列表C

<php
include ('Archive/Tar.php');// import class

if (file_exists('dummy.tar')) {
$obj = new Archive_Tar('dummy.tar'); // name of TAR file
} else {
die('File does not exist');
}

$files = array('otherstuff/logo.gif',
'otherstuff/header.gif',
'morestuff/berlin-bear.psd'); // additional files

if ($obj->add($files)) {
echo 'Added successfully!';
} else {
echo 'Error in file addition';
}
>

从已经存在的TAR文档中提取文件

在你将文件存入文档之后,如何读取它们呢?使用extractList()方法,显然,这个方法可以从一个已经存在的文档中提取一个或多个文件到一个指定目录,如列表D:
列表D

<php

include ('Archive/Tar.php');// import class

if (file_exists('dummy.tar')) {

$obj = new Archive_Tar('dummy.tar'); // name of TAR file

} else {

die('File does not exist');

}

$files = array('otherstuff/logo.gif',

'mystuff/alcon.doc'); // files to extract

if ($obj->extractList($files, 'unpackaged/')) {

echo 'Extracted successfully!';

} else {

echo 'Error in file extraction';

}

>

这里,要提取文件数组传递给extractlist()方法,同时包括提取文件存入的目录名。注意的是文件将连同它们的内部目录结构一起被提取出来(虽然这个行为可以通过传递特殊参数给extractlist()方法进行修改)。

除了这种可选择提取,还可以使用extract()方法,这个方法解压整个文档,提取所有文件到一个指定目录。如果这个目录不存在,它将通过extract()方法自动创建,当然要假设脚本据有些磁盘的许可权。列表E显示如何去做:
列表E

<php
include ('Archive/Tar.php'); // import class
if (file_exists('dummy.tar')) {
$obj = new Archive_Tar('dummy.tar'); // name of TAR file
} else {
die('File does not exist');
}
if ($obj->extract('unpackaged/')) {
echo 'Extracted successfully!';
} else {
echo 'Error in file extraction';
}
>

如上面的例子演示,PEAR的Archive_Tar类是多功能的,它允许你仅用几行简单的代码就可以执行一些相当复杂的TAE行为。希望本文中的示例脚本对你在日常的开发活动中使用Archive_Tar类有所帮助。

 

分享到:
评论

相关推荐

    php-5.4.45.tar.gz

    PHP(PHP:Hypertext Preprocessor)是一种开源、跨平台的服务器端脚本语言,广泛应用于Web开发,用于创建动态交互式网页。本文将详细解析PHP 5.4.45版本的源码包,特别关注其在Red Hat Enterprise Linux (RHEL) 和 ...

    Nginx1.12+PHP7.1+Mysql5.6.doc

    在搭建Web服务器的过程中,组合Nginx、PHP和MySQL是常见的选择,这使得服务器能够处理动态内容并存储数据。...yum -y install php71w-fpm php71w-cli php71w-gd php71w-mcrypt php71w-mysql php71w-pear ...

    PHP开发工具与环境搭建

    - GD是一个用于动态创建图像的图形库,广泛应用于网页中的图像生成。安装GD库的过程也包括解压、配置、编译和安装。在配置阶段可能还需要指定依赖库的位置。 **2.5 PHP的安装** - PHP的安装通常有两种方式:通过...

    linux下安装配置apache+php.pdf

    这份文档详细介绍了如何在Linux上通过YUM安装和管理Apache及PHP,以及如何进行编译安装以获取最新版本。 首先,我们来看如何使用YUM安装Apache和PHP。YUM(Yellowdog Updater, Modified)是一个在Fedora、CentOS和...

    freetds 文档

    ### freetds 文档知识点详解 #### 一、概述 FreeTDS 是一套开源软件工具,主要用于实现客户端应用程序与 Microsoft SQL Server 和 Sybase 数据库之间的兼容性连接。它支持多种编程语言,包括 PHP,在需要与 MSSQL ...

    HTML_AJAX-HelloWorld.tar

    HTML和AJAX是Web开发中的两个重要概念,它们在创建动态和交互式网页方面发挥着关键作用。在本实例中,我们关注的是一个名为"HTML_AJAX-HelloWorld"的压缩包,它包含了使用PEAR(PHP扩展和应用库)中的html_ajax组件...

    centos安装bphp

    在Linux系统中,CentOS是广泛使用的服务器操作系统之一,它为开发者提供了稳定和安全的环境。PHP(Hypertext Preprocessor)是一种流行的开源脚本语言,常用于Web开发,与Apache HTTP Server一起构建LAMP(Linux,...

    Centos6.0 x64下搭建LAMP环境.docx

    在CentOS 6.0 x64系统上搭建LAMP(Linux、Apache、MySQL、PHP)环境是一项常见的任务,主要用于创建动态网站和Web应用程序。以下是一步步详细指导如何完成这个过程: 1. 首先,确保系统已安装了必要的构建工具和库...

    lamp安装完整教程

    根据文档提供的信息,我们需要下载以下软件及其版本: - Apache 2.2.9 - MySQL 5.0.41 - PHP 5.2.6 - phpMyAdmin 3.0.0-rc1-all-languages - libxml2 2.6.30 - libmcrypt 2.5.8 - zlib 1.2.3 - gd 2.0.35 - Autoconf...

Global site tag (gtag.js) - Google Analytics