第二个灵魂 发表于 2015-2-3 23:30:40

PHP网页编程之PHP中的目次遍历细说教程

毕业设计作品自己个人还是觉得比较满意的,尽管有些功能考虑的不全面,也没有很好的实现。    HP进修教程文章简介: Php中的目次遍历细说教程 在编写php使用的进程傍边,对指定目次的遍历、文件的挑选是在所不免也是相当主要 的,PHP自己供应懂得析和读取目次的壮大办法。紧紧把握这些办法是每个phper所
   
Php中的目次遍历细说教程在编写php使用的进程傍边,对指定目次的遍历、文件的挑选是在所不免也是相当主要 的,PHP自己供应懂得析和读取目次的壮大办法。紧紧把握这些办法是每个phper所必需的。本文将对几个主要办法总结和归结,笔者经历尚浅,若有毛病 和疏漏但愿网友们加以斧正,以期配合前进。


函数                               前往类型                                    描写
opendir                        资本句柄                      失掉指定目次的资本句柄
is_dir                              布尔                              判别是不是为目次
is_readable                  布尔                                  给定目次是不是可读
readdir                     字符串                              经由过程资本句柄中读一个文件的文件名,指针后移,假如不存 在或已在最初的话在前往false
closedir                        void                                  封闭资本句柄,释放资本
scandir                           数组                           前往指定目次下一切的文件和目次构成的数组



遍历指定文件夹中的文件

http://www.alixixi.com/program/UploadPic/2012-8/2012821123013254.png?ra=0.6189439306366522

该段代码完成对指定目次中文件与目次的的根基遍历,个中readdir 函数读取给定目次资本句柄$handle里的文件并将指针后移,假如已到达最初一个文件的话,则前往false。别的"."代表本层目次".."代表下层目次也会被列出,在大多半情形下咱们需求把他们过滤失落。                  



遍历指定文件夹下指定类型的文件
               
多半情形下,咱们对目次的遍历常常要受限于某些前提,例如,咱们只需遍历出指定目次下的图象文件或一切的xml文件。为知足下面的请求,咱们重写代码,而且把代码封装到一个函数里。该函数能过滤失落"."和".."和目次,并根具参数前往指定的扩大名的文件。


http://www.alixixi.com/program/UploadPic/2012-8/2012821123017507.png?ra=0.4290759973243743


以上函数,可以取得指定目次下指定类型的文件。假如咱们想取得mypics下的一切jpeg和png的文件的话挪用该函数:               

$temp = getFileFrom("./mypics",array('jpeg','png'));

目次树的递归遍历
   我想在php中最适用的递归函数就是对目次的递归遍历了,上面的函数可以取得指定目次的完全布局。同时用scandir取代了opendir来简化代码。               



http://www.alixixi.com/program/UploadPic/2012-8/2012821123017474.png?ra=0.1325371228680735

奇异的glob
glob是php4.3.0后到场的非常壮大的函数,惋惜官方手册上的引见其实不具体。该函数界说以下:               

array glob ( string $pattern [, int $flags = 0 ] )

glob有两个参数 $pattern 与 可选的 $flag。$pattern 在字面是模板而不是纯真的指定目次的字符串, $flag 是一些常量参数,用来改动glob的行动。               

经由过程理论来进修他的用法。咱们的code1是用来遍历一个目次下一切文件的代码,假如用glob写的话可以如许。               




http://www.alixixi.com/program/UploadPic/2012-8/2012821123017771.png?ra=0.6645789776061368

我 们可以看到区分,起首glob要复杂的多,其次glob的第一个参数,"d:/wamp/*"告知glob要查找的文件是"d:/wamp"目次下的一切 文件,因而可知$pattern更像是操作体系的通配符。并且前往的内容中已过滤失落了'.'和'..',假如咱们要找到一切的bmp文件只需把参数写 成"d:/wamp/*.bmp"就能够了,这下子复杂多了。举个罕见的例子,好比咱们的网站下有个文件夹叫wallpaper,上面的每一个目次是 wallpaper的分类,而每个分类下又包括两目次,origin(正常巨细的),和thumb(缩略图),咱们需求一段代码来读取一切分类的一切缩 略图,假如不是用glob将是很费事的一段代码,用glob的话,代码就是上面的模样了:                  


foreach(glob("wallpaper/*/thumb/*") as $fileName){
         ehco $fileName;
}


glob第二个参数的寄义:                  

GLOB_MARK                           为每个目次添加一个反斜杠
GLOB_NOSORT                      了局不经由排序
GLOB_NOCHECK                  假如没有婚配的了局,则前往模板自己
GLOB_NOSPACE                   Backslashes do not quote metacharacters
GLOB_BRACE                        {a,b,c}分化为a,b,c并分离婚配(主要)
GLOB_ONLYDIR                     仅前往目次
GLOB_ERR                            Stop on read errors (like unreadable directories), by default errors are ignored.



假如咱们要查找图片的文件的话可以如许写                  

foreach(glob("d:/wamp/{*.jpeg,*.jpg,*.gif}", GLOB_BRACE) as $filename){
       echo $filename;
}

上面的代码是对getFileFrom()函数的改写,代码复杂良多,难点酿成了对$exts参数的解析。               

http://www.alixixi.com/program/UploadPic/2012-8/2012821123017944.png?ra=0.0632322436880266

以上是对目次遍历的一个复杂总结,算是团体的进修笔记了,假如也能对人人有所匡助,我很乐意。   
然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了)

第二个灵魂 发表于 2015-2-4 00:06:09

实践是检验自己会不会的真理。

变相怪杰 发表于 2015-2-9 07:54:06

说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。

爱飞 发表于 2015-2-20 09:13:49

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。

只想知道 发表于 2015-3-2 14:22:36

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

精灵巫婆 发表于 2015-3-3 16:43:56

如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,

小魔女 发表于 2015-3-11 01:37:28

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

兰色精灵 发表于 2015-3-11 09:15:24

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。

再见西城 发表于 2015-3-13 04:09:42

个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。

小女巫 发表于 2015-3-20 12:19:53

其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎

谁可相欹 发表于 2015-3-23 18:14:42

装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。

灵魂腐蚀 发表于 2015-3-24 22:18:50

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

海妖 发表于 2015-4-4 02:01:03

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

飘飘悠悠 发表于 2015-4-11 05:10:10

我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。

柔情似水 发表于 2015-4-15 06:56:29

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

透明 发表于 2015-4-16 00:34:39

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

admin 发表于 2015-4-21 22:11:52

写的比较杂,因为我也是个新手,不当至于大家多多指正。

金色的骷髅 发表于 2015-4-25 15:29:02

在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、

因胸联盟 发表于 2015-5-1 08:11:50

再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
页: [1]
查看完整版本: PHP网页编程之PHP中的目次遍历细说教程