这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 PHP 文件与目录操作, 涉及 php 针对文件与目录的遍历、判断与排序相关操作技巧, 注释中备有较为详细的说明, 需要的朋友可以参考下
本文实例讲述了 PHP 文件与目录操作。分享给大家供大家参考,具体如下:
文件目录相关函数
- <?php
- // 输出目录中的文件
- function outputcurfiles ($allowedtypes, $thedir){
- //首先,我们确保目录存在。
- if (is_dir ($thedir)){
- //现在,我们使用scandir扫描目录中的文件。
- $scanarray = scandir ($thedir);
- //接着我们开始解析数组。
- //scandir()用"."和".."统计文件导航列表
- //因此作为文件,我们不应该列出他们。
- for ($i = 0; $i < count ($scanarray); $i++){
- if ($scanarray[$i] != "." && $scanarray[$i] != ".."){
- //现在,进行检查,以确保这是一个文件,而不是一个目录。
- if (is_file ($thedir . "/" . $scanarray[$i])){
- //现在,因为我们将允许客户端编辑这个文件,
- //我们必须检查它是否是可读和可写。
- if (is_writable ($thedir. "/" . $scanarray[$i]) && is_readable($thedir . "/" . $scanarray[$i])){
- //现在,我们检查文件类型是否存在于允许的类型数组中.
- $thepath = pathinfo ($thedir . "/" . $scanarray[$i]);
- if (in_array ($thepath['extension'], $allowedtypes)){
- //如果文件符合规定,我们可以继续输出.
- echo $scanarray[$i] . "<br />";
- }
- }
- }
- }
- }
- } else {
- echo "对不起,这个目录不存在.";
- }
- }
- $allowedtypes = array ("txt","html");
- outputcurfiles ($allowedtypes, "testfolder");
- ///////////////////////////////////////////////////
- function recurdir ($thedir) {
- //First attempt to open the directory.
- try {
- if ($adir = opendir ($thedir)){
- //扫描目录。
- while (false !== ($anitem = readdir ($adir))){
- //不统计目录中包含"."或".."的情况
- if ($anitem != "." && $anitem != ".."){
- //此时如果是一个目录,则缩进一点
- //再去递归
- if (is_dir ($thedir . "/" . $anitem)){
- ?><span style="font-weight: bold;" mce_style="font-weight: bold;"><?php echo $anitem; ?></span><?php
- ?><div style="margin-left: 10px;" mce_style="margin-left:10px;"><?php
- recurdir ($thedir . "/" . $anitem );
- ?></div><?php
- } elseif (is_file ($thedir . "/" . $anitem)){
- //此时输出文件.
- echo $anitem . "<br />";
- }
- }
- }
- } else {
- throw new exception ("Sorry, directory could not be openend.");
- }
- } catch (exception $e) {
- echo $e->getmessage();
- }
- }
- echo "<br />/////////////////////////////////////<br /><br />";
- recurdir("testfolder");
- //////////////////////////////////////////////////////////////////
- echo "<br />/////////////////////////////////////<br /><br />";
- function sortfilesbydate ($thedir){
- //首先,需要确保目录存在。
- if (is_dir ($thedir)){
- //接着,我们使用scandir扫描此目录中的文件.
- $scanarray = scandir ($thedir);
- $finalarray = array();
- //然后开始解析数组
- //scandir()用"."和".."统计文件导航列表
- //因此作为文件,我们不应该列出他们.
- for ($i = 0; $i < count ($scanarray); $i++){
- if ($scanarray[$i] != "." && $scanarray[$i] != ".."){
- //现在,我们检查,以确保这是一个文件,而不是一个目录.
- if (is_file ($thedir . "/" . $scanarray[$i])){
- //现在需要做的是循环数据到一个关联数组.
- $finalarray[$thedir . "/" . $scanarray[$i]] = filemtime ($thedir . "/" . $scanarray[$i]);
- }
- }
- }
- //至此,我们已经遍历了整个数组,现在需要做的只是asort()它。
- asort ($finalarray);
- return ($finalarray);
- } else {
- echo "对不起,这个目录不存在.";
- }
- }
- //然后,我们将函数指向我们需要查看的目录.
- $sortedarray = sortfilesbydate ("testfolder");
- //至此,就可以按照如下形式输出:
- while ($element = each ($sortedarray)){
- echo "File: " . $element['key'] . " was last modified: " . date ("F j, Y h:i:s", $element['value']) . "<br />";
- }
- ?>
希望本文所述对大家 PHP 程序设计有所帮助。
来源: http://www.phperz.com/article/17/0808/340797.html