php课程 10-34 目录遍历中的注意事项是什么

一、总结

一句话总结:用scandir,会把目录和文件放到一个数组中。

1、移动文件怎么实现,php里面没有移动文件这个函数?

先复制,再删除

  1. 2 //删除目录
  2. 3 function delDir($dir){
  3. 4 $files=scandir($dir);
  4. 5 foreach($files as $key=>$val){
  5. 6 if($key>1){
  6. 7 $file=$dir.'/'.$val;
  7. 8
  8. 9 if(is_dir($file)){
  9. 10 delDir($file);
  10. 11 }else{
  11. 12 unlink($file);
  12. 13 }
  13. 14 }
  14. 15 }
  15. 16 rmdir($dir);
  16. 17 }
  17. 18
  18. 19 // 复制目录
  19. 20 function copyDir($dir1,$dir2){
  20. 21 mkdir($dir2);
  21. 22 $files=scandir($dir1);
  22. 23 foreach($files as $key=>$val){
  23. 24 if($key>1){
  24. 25 $file1=$dir1.'/'.$val;
  25. 26 $file2=$dir2.'/'.$val;
  26. 27
  27. 28 if(is_dir($file1)){
  28. 29 copyDir($file1,$file2);
  29. 30 }else{
  30. 31 copy($file1,$file2);
  31. 32 }
  32. 33 }
  33. 34 }
  34. 35 }
  35. 36
  36. 37 //移动目录
  37. 38 function moveDir($dir1,$dir2){
  38. 39 copyDir($dir1,$dir2);
  39. 40 delDir($dir1);
  40. 41 }
  41. 42
  42. 43 $dir1='img';
  43. 44 moveDir($dir1,'img3');

2、如何删除一个非空目录,php默认函数没有?

rmdir不能删除非空目录
直接百度,找第三方的代码集合

3、目录遍历的时候,为什么没有显示点(.)(本级目录)和点点(..)(上一级目录)?

遍历目录的时候,点(.)和点点(..)是一直都存在的,只不过被影藏了
在dos下敲dir,也会出现点(.)(本级目录)和点点(..)(上一级目录)这两个
无论在windows和linux里面,点和点点都被影藏了

  1. 7 while($file=readdir($od)){
  2. 8 if($file!='.' && $file!='..'){
  3. 9 echo $file.'<br>';
  4. 10 }
  5. 11 }

4、如何在一个文件中两次使用opendir,有什么注意事项?

前一次opendir之后必须closedir关闭,后一次的opendir然后才能打开,不然会报错

5、目录遍历,什么函数最好用?

scandir,用scandir,会把目录和文件放到一个数组中。

  1. 3 $dir='imgs';
  2. 4
  3. 5 $arr=scandir($dir);
  4. 6
  5. 7 foreach($arr as $key=>$val){
  6. 8 if($key>1){
  7. 9 echo $key.'-'.$val.'<br>';
  8. 10 }
  9. 11 }

二、目录遍历中的注意事项是什么

1、相关知识

目录操作:
1.遍历目录
opendir();
readdir();
closedir();
scandir();

2.创建空目录
mkdir();

3.删除空目录
rmdir();

4.删除完整目录(delDir)
scandir();

function delDir($dir){
    $files=scandir($dir);
    foreach($files as $key=>$val){
        if($key>1){
            $file=$dir.'/'.$val;

if(is_dir($file)){
                delDir($file);
            }else{
                unlink($file);
            }
        }
    }
    rmdir($dir);
}

5.复制完整目录(cpDir)
function copyDir($dir1,$dir2){
    mkdir($dir2);
    $files=scandir($dir1);
    foreach($files as $key=>$val){
        if($key>1){
            $file1=$dir1.'/'.$val;
            $file2=$dir2.'/'.$val;

if(is_dir($file1)){
                copyDir($file1,$file2);
            }else{
                copy($file1,$file2);
            }
        }
    }
}

6.移动完整目录(mvDir)
copyDir();
delDir();

 

2、代码

moveDir移动目录

  1. <?php
  2. //删除目录
  3. function delDir($dir){
  4. $files=scandir($dir);
  5. foreach($files as $key=>$val){
  6. if($key>1){
  7. $file=$dir.'/'.$val;
  8.  
  9. if(is_dir($file)){
  10. delDir($file);
  11. }else{
  12. unlink($file);
  13. }
  14. }
  15. }
  16. rmdir($dir);
  17. }
  18.  
  19. // 复制目录
  20. function copyDir($dir1,$dir2){
  21. mkdir($dir2);
  22. $files=scandir($dir1);
  23. foreach($files as $key=>$val){
  24. if($key>1){
  25. $file1=$dir1.'/'.$val;
  26. $file2=$dir2.'/'.$val;
  27.  
  28. if(is_dir($file1)){
  29. copyDir($file1,$file2);
  30. }else{
  31. copy($file1,$file2);
  32. }
  33. }
  34. }
  35. }
  36.  
  37. //移动目录
  38. function moveDir($dir1,$dir2){
  39. copyDir($dir1,$dir2);
  40. delDir($dir1);
  41. }
  42.  
  43. $dir1='img';
  44. moveDir($dir1,'img3');
  45. ?>

opendir和readdir目录遍历

  1. <?php
  2.  
  3. $dir='imgs';
  4.  
  5. $od=opendir($dir);
  6.  
  7. while($file=readdir($od)){
  8. if($file!='.' && $file!='..'){
  9. echo $file.'<br>';
  10. }
  11. }
  12. ?>

scandir目录遍历

  1. <?php
  2.  
  3. $dir='imgs';
  4.  
  5. $arr=scandir($dir);
  6.  
  7. foreach($arr as $key=>$val){
  8. if($key>1){
  9. echo $key.'-'.$val.'<br>';
  10. }
  11. }
  12. ?>
 

php课程 10-34 目录遍历中的注意事项是什么的更多相关文章

  1. DVWA-文件包含-目录遍历学习笔记

    参考文献资料: https://www.cnblogs.com/s0ky1xd/p/5823685.html https://www.cnblogs.com/yuzly/p/10799486.html ...

  2. HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)

    参考文献: http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下载地 ...

  3. 炼数成金数据分析课程---10、python中如何画图

    炼数成金数据分析课程---10.python中如何画图 一.总结 一句话总结: 主要matplotlib库,pandas中也可以画一些基础图 大纲+实例快速学习法 1.matplotlib的最简单画图 ...

  4. 【代码审计】711cms_V1.0.5 目录遍历漏洞分析

      0x00 环境准备 711CMS官网: https://www.711cms.com/ 网站源码版本:711CMS 1.0.5 正式版(发布时间:2018-01-20) 程序源码下载:https: ...

  5. 【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  6. 【二叉树遍历模版】前序遍历&&中序遍历&&后序遍历&&层次遍历&&Root->Right->Left遍历

    [二叉树遍历模版]前序遍历     1.递归实现 test.cpp: 12345678910111213141516171819202122232425262728293031323334353637 ...

  7. 【代码审计】大米CMS_V5.5.3 目录遍历漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  8. Linux课程---10、权限管理(权限有哪几种)

    Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x---  2 root root  4096 Jan 20 19:39 mnt ...

  9. laravel基础课程---10、数据库基本操作(如何使用数据库)

    laravel基础课程---10.数据库基本操作(如何使用数据库) 一.总结 一句话总结: 1.链接数据库:.env环境配置里面 2.执行数据库操作:DB::table('users')->up ...

随机推荐

  1. Selenium_WebDriver操作iFrame日历框和复选框_Java

    iFrame日历框 页面上遇到iFrame元素时,先用findElement找到这个iFrame元素,然后再WebDriver.switchTo().frame(calFrame).在iFrame里操 ...

  2. Cocos2dx 小技巧(十二) 一种可行的系列动画播放方式

    今早发生了一件事让我感觉特气愤!去年的这个时候,我和小伙伴们一起在操场上拍毕业照,之后有个当地报纸的记者来我们学校取材,看到我们后打算给我们拍几张创意张扬点的毕业照.之后呢,照片出来了,拍的效果大伙都 ...

  3. 如何覆盖GCE的DHCP MTU选项

     如何覆盖GCE的DHCP MTU选项 在GCE上托管的Linux IPSec隧道不能打开谷歌,这与MTU有关.谷歌管理员认为"改变这个值是一件困难的事情"https://cl ...

  4. 59.node的serve-favicon中间件的使用

    转自:https://www.zhi-jie.net/node-serve-favicon-use/ 有一个名称为serve-favicon的中间件,可以用于请求网页的favicon图标.譬如如下的使 ...

  5. 为root账户更名

    为root账户更名 处于安全考虑许多管理员想把root更名,具体方法如下: 1.先以root登陆系统 2.用vi 编辑/etc/passwd文件,将第一行的第一个root修改为你想要的账户名,然后保存 ...

  6. chsh---更换登录系统时使用的shell

    chsh命令   chsh命令用来更换登录系统时使用的shell.若不指定任何参数与用户名称,则chsh会以应答的方式进行设置. 语法 chsh(选项)(参数) 选项 -s<shell 名称&g ...

  7. python 补0的方法

    # 方法一 z = 'bb' z.zfill(6) ----'0000bb' n = ' n.zfill(5) ----' # 方法二 ' " ---- '报错' # 方法的区别 方法二只能 ...

  8. win8用久了变得非常慢, 磁盘占用100%

    完美解决方式:  直接重装win7 完美解决这个问题 在网上查了非常久也没找到有效方法, 求教

  9. animation- 动画效果实现(xml形式实现)

    1.定义xml动画 1)在anim文件夹下定义xml文件 解释:这个文件夹下面的文件会被默认为动画文件,如果这个文件不存在,需要自己创建 display_result_anim.xml <?xm ...

  10. H5+混合移动app

    H5+混合移动app 前言 经过2个多月的艰苦奋斗,app的第一个版本已经快完工了,期间遇到了太多的坑,作为一个喜欢分享的人,我当然不会吝啬分享这爬坑历程.不要问我有多坑,我会告诉你很多,很多.... ...