当前位置:首页 » 编程语言 » php目录类

php目录类

发布时间: 2022-07-13 03:17:46

A. php目录操作实例代码

这篇文章主要介绍了php目录操作实例代码,需要的朋友可以参考下
代码如下:
<?php

/**

*
listdir

*/

header("content-type:text/html;charset=utf-8");

$dirname
=
"./final/factapplication";

function
listdir($dirname)
{

$ds
=
opendir($dirname);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$dirname.'/'.$file;

if
($file
!=
'.'
&&
$file
!=
'..')
{

if
(is_dir($path))
{

listdir($path);

}
else
{

echo
$file."<br>";

}

}

}

closedir($ds);

}

listdir($dirname);

核心:递归的经典应用,以及文件和目录的基本操作。

代码如下:
<?php

/**

*
dir

*/

$srcdir
=
"../fileupload";

$dstdir
=
"b";

function
dir($srcdir,
$dstdir)
{

mkdir($dstdir);

$ds
=
opendir($srcdir);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$srcdir."/".$file;

$dstpath
=
$dstdir."/".$file;

if
($file
!=
"."
&&
$file
!=
"..")
{

if
(is_dir($path))
{

dir($path,
$dstpath);

}
else
{

($path,
$dstpath);

}

}

}

closedir($ds);

}

dir($srcdir,
$dstdir);

核心:函数。

代码如下:
<?php

/**

*
deldir

*/

$dirname
=
'a';

function
deldir($dirname)
{

$ds
=
opendir($dirname);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$dirname.'/'.$file;

if($file
!=
'.'
&&
$file
!=
'..')
{

if
(is_dir($path))
{

deldir($path);

}
else
{

unlink($path);

}

}

}

closedir($ds);

return
rmdir($dirname);

}

deldir($dirname);

核心:注意unlink删除的是带path的file。

代码如下:
<?php

/**

*
dirsize

*/

$dirname
=
"a";

function
dirsize($dirname)
{

static
$tot;

$ds
=
opendir($dirname);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$dirname.'/'.$file;

if
($file
!=
'.'
&&
$file
!=
'..')
{

if(is_dir($path))
{

dirsize($path);

}
else
{

$tot
=
$tot
+
filesize($path);

}

}

}

return
$tot;

closedir($ds);

}

echo
dirsize($dirname);

核心:通过判断$tot在哪里返回,理解递归函数。

B. PHP怎么自动加载同一目录下同一命名空间的类文件

自动加载的,只有在实例化时才会真的载入。实例化时,调用公共空间的方式是直接在元素名称前加
\
就可以了,否则PHP解析器会认为我想调用当前空间下的元素。

C. php递归获取目录内文件封装类分享

php递归获取目录内文件封装类分享,可以递归子目录
代码如下:

代码如下:
function
readFileFromDir($dir)
{

if
(!is_dir($dir))
{

return
false;

}

//打开目录

$handle
=
opendir($dir);

while
(($file
=
readdir($handle))
!==
false)
{

//排除掉当前目录和上一个目录

if
($file
==
"."
||
$file
==
"..")
{

continue;

}

$file
=
$dir
.
DIRECTORY_SEPARATOR
.
$file;

//如果是文件就打印出来,否则递归调用

if
(is_file($file))
{

print
$file
.
'<br
/>';

}
elseif
(is_dir($file))
{

readFileFromDir($file);

}

}
}

调用方式:

代码如下:
$dir
=
'/home/www/test';
readFileFromDir($dir);

查看php手册的话,还有一个方法scandir也可以使用,不过这个方法会一次性获取单级目录下的所有文件,存放到数组里,如果目录里的文件比较多的话,会卡。

D. php中目录操作opendir()、readdir()及scandir()用法示例

本文实例讲述了php中目录操作opendir()、readdir()及scandir()用法。分享给大家供大家参考,具体如下:
opendir(path,context)若成功,则该函数返回一个目录流,否则返回
false
以及一个
error。可以通过在函数名前加上
“@”
来隐藏
error
的输出。
readdir()
函数返回由
opendir()
打开的目录句柄中的条目。若成功,则该函数返回一个文件名,否则返回
false。
scandir()
函数返回一个数组,其中包含指定路径中的文件和目录。
若成功,则返回一个数组,若失败,则返回
false。如果
directory
不是目录,则返回布尔值
false
付上2段搜到的读取目录的代码,亲测有效
显示目录中文件名
//
打开目录,然后读取其内容
if
(is_dir($dir)){
if
($dh
=
opendir($dir)){
while
(($file
=
readdir($dh))
!==
false){
echo
"filename:"
.
$file
.
"<br>";
}
closedir($dh);
}
}
拷贝一个目录的文件到另一个目录
_dir($from_dir,$to_dir);
function
_dir($from_dir,$to_dir){
if(!is_dir($from_dir)){
return
false;
}
echo
"\r\n
from:",$from_dir,'---to',$to_dir;
$from_files
=
scandir($from_dir);
//如果不存在目标目录,则尝试创建
if(!file_exists($to_dir)){
@mkdir($to_dir);
}
if(!empty($from_files)){
foreach
($from_files
as
$file){
if($file
==
'.'
||
$file
==
'..'
){
continue;
}
if(is_dir($from_dir.'/'.$file)){//如果是目录,则调用自身
_dir($from_dir.'/'.$file,$to_dir.'/'.$file);
}else{//直接到目标文件夹
($from_dir.'/'.$file,$to_dir.'/'.$file);
}
}
}
}
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP目录操作技巧汇总》、《php文件操作总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:使用PHP函数scandir排除特定目录PHP获取当前文件所在目录
getcwd()函数php文件夹与文件目录操作函数介绍php中判断文件空目录是否有读写权限的函数代码PHP解析目录路径的3个函数总结PHP使用glob函数遍历目录或文件夹的方法php
file_exists
检查文件或目录是否存在的函数PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结PHP删除非空目录的函数代码小结PHP目录函数实现创建、读取目录教程实例php使用scandir()函数扫描指定目录下所有文件示例

E. 现在大型php程序目录结构一般怎么安排

PHP之所以能在web开发语言中排名靠前,不仅仅是因为语法简单,上手容易。我个人认为更多是因为其语言本身的:模块的易扩展性,可维护性以及内存安全管理等特点。写过PHP的程序员不一定都知道:PHP是如何执行的?其组织结构目录的作用?如果对其有所了解,对PHP的认识会更深入,写出的代码也会更高效,更健壮......
1. build 和编译有关的目录。
2. ext 扩展库代码,例如 mysql、zlib、iconv 等我们熟悉的扩展库。其中/ext/standard/ 目录下是常用的标准函数集。
3. main 主目录包含主要的 PHP 宏和定义。
4. sapi 和各种服务器的接口调用,例如apache、IIS等,也包含一般的fastcgi、cgi等。
5. win32 和 Windows 下编译 PHP 有关的脚本
6. Zend 文件夹核心的引擎,所有的 Zend API 定义与宏等。
7. scripts Linux 下的脚本目录。
8. tests 测试脚本目录
9. sapi 各类 Web 服务器的接口。
10.TSRM Zend 和 PHP 的 “线程安全资源管理器” (TSRM) 目录。
11.pear 这个目录就是“PHP 扩展与应用仓库”的目录。包含了PEAR 的核心文件。

其中几个重要的文件绝对值得你共时间去了解:
php-src/main/php.h, 位于PHP 主目录。这个文件包含了绝大部分 PHP 宏及 API 定义。
php-src/Zend/zend.h, 位于 Zend 主目录。这个文件包含了绝大部分 Zend 宏及 API 定义。
php-src/Zend/zend_API.h, 也位于 Zend 主目录,包含了Zend API 的定义

F. 如何设置PHP扩展的目录

当服务器上PHP已经安装好,需要额外添加PHP扩展时怎么办?不需要重新安装PHP,有了phpize我们可以在原有的PHP基础之上直接安装扩展库。
这次编译仅仅只是单独编译PHP的扩展库,接下来将编译好的扩展库加入到现在运行的php中,不对现在运行的php重新编译,所以没有一点的影响。
下面我们演示安装xsl的扩展(不一定常用,仅做为一个范例)
做法一:
1.找到当前运行的php版本的源代码目录,如php-5.2.3。进入xsl扩展库目录。
$cd /home/pkgs/php-5.3.3/ext/xsl
2.调用phpize程序生成编译配置文件。
$/home/app/php5.3.3/bin/phpize
3.编译扩展库,分别执行下面的configure和make命令。
$./configure-with-php-config=/home/app/php5.3.3/bin/php-config
这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。
$make
#make成功执行后,生成的扩展库文件在当前目录的 moles子目录下,
如/home/php-5.3.3/ext/curl/moles/xsl.so
4.配置php.ini文件
#将编译好的扩展库文件复制到PHP的扩展目录下,可通过查看phpinfo信息。。
$ cp /home/pkg/php-5.3.3/ext/xsl/moles/xsl.so /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626
#在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到php安装目录/extension/no-debug-non....目录下,并添加扩展库位置。
extension_dir /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626”
extension=xsl.so
5.重启php,查看phpinfo信息,即可看到刚才添加进去的xsl扩展库。(如果有多个php-fpm进程的话,平滑重启主进程即可:kill -USR2 pid)

G. PHP删除指定目录中的所有目录及文件的方法

本文实例讲述了PHP删除指定目录中的所有目录及文件的方法。分享给大家供大家参考。具体实现方法如下:
<?php
/*
*
*
删除指定目录中的所有目录及文件(或者指定文件)
*
可扩展增加一些选项(如是否删除原目录等)
*
删除文件敏感操作谨慎使用
*
@param
$dir
目录路径
*
@param
array
$file_type指定文件类型
*/
function
delFile($dir,$file_type='')
{
if(is_dir($dir)){
$files
=
scandir($dir);
//打开目录
//列出目录中的所有文件并去掉
.

..
foreach($files
as
$filename){
if($filename!='.'
&&
$filename!='..'){
if(!is_dir($dir.'/'.$filename)){
if(empty($file_type)){
unlink($dir.'/'.$filename);
}else{
if(is_array($file_type)){
//正则匹配指定文件
if(preg_match($file_type[0],$filename)){
unlink($dir.'/'.$filename);
}
}else{
//指定包含某些字符串的文件
if(false!=stristr($filename,$file_type)){
unlink($dir.'/'.$filename);
}
}
}
}else{
delFile($dir.'/'.$filename);
rmdir($dir.'/'.$filename);
}
}
}
}else{
if(file_exists($dir))
unlink($dir);
}
}
delFile(dirname(__FILE__),'html');
希望本文所述对大家的php程序设计有所帮助。

H. 关于用PHP创建文件和目录的问题如下

php创建一个有读写权限的目录,使用以下代码,不要直接使用mkdir函数指定权限,以避免系统umask的影响
mkdir('./xw/');
//创建名为'xw'的目录
chmod('./xw/',0777);//设置目录权限为0777

I. 关于使用php生成目录的问题

这个逻辑很简单,只要对目标文件夹进行文件数量判断递归3次就行

帮你简单写了个实现函数

functiongetFile($path,$prefix,$mkdir=false)
{
$dir=scandir($path);
$index=count($dir)-2;
if($mkdir){
$name=$prefix.$index;
mkdir($path.$name);
return$path.$name;
}else{
if(!$index){
$name=$prefix.'0';
mkdir($path.$name);
}else{
$name=$dir[count($dir)-1];
if(count(scandir($path.'\'.$name))-2===5){
$name=$prefix.($index+1);
mkdir($path.$name);
};
};
return$path.$name.'\';
}
}

使用方式

for($i=0;$i<100;$i++){

//初始目录确保是空文件夹否则a的命名逻辑可能会出现问题
$path='E:\test\';

$path=getFile($path,'a');

$path=getFile($path,'b');

getFile($path,'c',true);
//理论上能实现无限递归,只要在最后一级把参数mkdir改为true就行
}

J. php新手,关于分类目录,求思路

表结构:
表名 menu
字段:
m_id
m_name
m_fatherid
.
.
.(其它字段根据你实际需要)

数据:
m_id m_name m_fatherid
1 我的订单 0
2 我的账号 0
3 待付款订单 1
4 已付款订单 1
5 过期订单 1
6 账号信息 2
7 修改密码 2
8................................不写了。你自己完成吧。。。

读取菜单:

<?php
$conn = mysql_connect('localhost','xxxx','xxxxx');
mysql_select_db('xxxx',$conn);
mysql_query("SET NAMES UTF8");

function get_menu ($f_id=0,$conn) {
$menu_arr = array();

$sql = "SELECT * FROM `menu` WHERE `m_fatherid`=".intval($f_id);

$result = mysql_query($sql,$conn);

if (!$result){
return false;
}

$row = "";
$i = 1;
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$menu_arr[$i] = $row;
$menu_arr[$i] ['sub'] = get_menu($row['m_id'],$conn);
$i++;
}

return $menu_arr;
}

$menus = get_menu(0,$conn);
echo "<pre>";
print_r($menus);
echo "</pre>";
?>

结果你自己格式化再输出吧。能用的,我试过了 输出的数组大概为:
Array
(
[1] => Array
(
[m_id] => 1
[m_name] => 订单管理
[m_fatherid] => 0
[sub] => Array
(
[1] => Array
(
[m_id] => 3
[m_name] => 已完成定单
[m_fatherid] => 1
[sub] => Array
(
)
)
[2] => Array
(
[m_id] => 4
[m_name] => 待完成定单
[m_fatherid] => 1
[sub] => Array
(
)
)
)
)
[2] => Array
(
[m_id] => 2
[m_name] => 账号管理
[m_fatherid] => 0
[sub] => Array
(
[1] => Array
(
[m_id] => 5
[m_name] => 信息修改
[m_fatherid] => 2
[sub] => Array
(
)
)
[2] => Array
(
[m_id] => 6
[m_name] => 修改密码
[m_fatherid] => 2
[sub] => Array
(
)
)
)
)
)

热点内容
安卓系统怎么注册不了ins 发布:2024-05-19 14:01:00 浏览:960
买服务器后怎么搭建功能 发布:2024-05-19 14:00:03 浏览:207
windows文件夹图标下载 发布:2024-05-19 13:25:44 浏览:689
数据库存储数据类型 发布:2024-05-19 13:25:28 浏览:584
电脑开机密码忘记了如何解锁没有管理员窗口 发布:2024-05-19 13:24:50 浏览:277
畅捷支付刷脸机如何设置密码 发布:2024-05-19 13:03:10 浏览:764
java麻将 发布:2024-05-19 13:03:00 浏览:433
存储过程大数据游标 发布:2024-05-19 13:00:50 浏览:515
内存存储价格 发布:2024-05-19 13:00:48 浏览:389
隔离期的算法 发布:2024-05-19 12:55:13 浏览:530