仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1108|回复: 19
打印 上一主题 下一主题

[学习教程] PHP网页编程之具体进修PHP中对文件和目次的操作办法

[复制链接]
精灵巫婆 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:52:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的。   一:引论
在任何盘算机装备中,文件是都是必需的对象,而在web编程中,文件的操作一向是web法式员的头疼的中央,文件的操作在cms体系中这是必需的,十分有效的,咱们常常碰到生成文件目次,文件(夹)编纂等操作,如今我把php中的这些函数做一具体总结并实例示范若何利用,关于对应的函数具体引见,请查阅php手册,此处只总结重点和需求注重的中央。
二:目次操作
起首引见的是一个从目次读取的函数,opendir(),readdir(),closedir(),利用的时分是先翻开文件句柄,尔后迭代列出:
以下为援用的内容:
<?php
$base_dir    =    "filelist/";
$fso        =    opendir($base_dir);
echo    $base_dir."<hr/>"        ;
while($flist=readdir($fso)){
echo $flist."<br/>"    ;
}
closedir($fso)
?>
这是讲前往文件目次上面的文件已目次的法式(0文件将前往false)。
有时分需求晓得目次的信息,可使用dirname($path)和basename($path),分离前往途径的目次局部和文件名称号局部,可用disk_free_space($path)前往看空间空余空间。
创立号令:
mkdir($path,0777),0777是权限码,在非window下可用umask()函数设置。
rmdir($path)将删除途径在$path的文件。
dir -- directory 类也是操作文件目次的主要类,有3个办法,read,rewind,close,这是一个仿面向对象的类,它先利用的是翻开文件句柄,然后用指针的体例读取的,这里看php手册:
以下为援用的内容:
<?php
$d = dir("/etc/php5");
echo "Handle: " . $d->handle . "\n";
echo "Path: " . $d->path . "\n";
while (false !== ($entry = $d->read())) {
   echo $entry."\n";
}
$d->close();
?>
输入:
Handle: Resource id #2
Path: /etc/php5
.
..
apache
cgi
cli

文件的属性也十分主要,文件属性包含创立工夫,最初修正工夫,一切者,文件组,类型,巨细等
上面咱们重点谈文件操作。
三:文件操作
●读文件
起首是一个文件看能不克不及读取(权限成绩),或存在不,咱们可以用is_readable函数获得信息:
以下为援用的内容:
<?php
$file = 'dirlist.php';
if (is_readable($file) == false) {
        die('文件不存在或没法读取');
} else {
        echo '存在';
}
?>
判别文件存在的函数还有file_exists(上面演示),然而这个明显无is_readable周全,当一个文件存在的话可以用
以下为援用的内容:
<?php
$file = "filelist.php";
if (file_exists($file) == false) {
        die('文件不存在');
}
$data = file_get_contents($file);
echo htmlentities($data);
?>然而file_get_contents函数在较低版本上不撑持,可以先创立文件的一个句柄,然后用指针读取全体:
         $fso = fopen($cacheFile, 'r');
        $data = fread($fso, filesize($cacheFile));
        fclose($fso);

还有一种体例,可以读取二进制的文件:
$data = implode('', file($file));
●写文件
和读取文件的体例一样,先看看是否是能写:
以下为援用的内容:
<?php
$file = 'dirlist.php';
if (is_writable($file) == false) {
        die("我是鸡毛,我不克不及");
}
?>

能写了的话可使用file_put_contents函数写入:
以下为援用的内容:
<?php
$file = 'dirlist.php';
if (is_writable($file) == false) {
        die('我是鸡毛,我不克不及');
}
$data = '我是可鄙,我想要';
file_put_contents ($file, $data);
?>
file_put_contents函数在php5中新引进的函数(不晓得存在的话用function_exists函数先判别一下)低版本的php没法利用,可使用以下体例:
$f = fopen($file, 'w');
fwrite($f, $data);
fclose($f);

交换之。
写文件的时分有时分需求锁定,然后写:
以下为援用的内容:
function cache_page($pageurl,$pagedata){
    if(!$fso=fopen($pageurl,'w')){
        $this->warns('没法翻开缓存文件.');//trigger_error
        return false;
    }
    if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定
        $this->warns('没法锁定缓存文件.');//trigger_error
        return false;
    }
    if(!fwrite($fso,$pagedata)){//写入字撙节,serialize写入其他格局
        $this->warns('没法写入缓存文件.');//trigger_error
        return false;
    }
    flock($fso,LOCK_UN);//释放锁定
    fclose($fso);
    return true;
}
●复制,删除文件
php删除文件十分easy,用unlink函数复杂操作:
以下为援用的内容:
<?php
$file = 'dirlist.php';
$result = @unlink ($file);
if ($result == false) {
        echo '蚊子赶走了';
} else {
        echo '没法赶走';
}
?>
便可。
复制文件也很轻易:
以下为援用的内容:
<?php
$file = 'yang.txt';
$newfile = 'ji.txt'; # 这个文件父文件夹必需能写
if (file_exists($file) == false) {
        die ('小样没上线,没法复制');
}
$result = copy($file, $newfile);
if ($result == false) {
        echo '复制记忆ok';
}
?>
可使用rename()函数重定名一个文件夹。其他操作都是这几个函数组合一下就可以完成的。
●获得文件属性
我说几个罕见的函数:
获得比来修正工夫:
以下为援用的内容:
<?php
$file = 'test.txt';
echo date('r', filemtime($file));
?>
前往的说unix的工夫戳,这在缓存手艺经常使用。
相干的还有获得前次被会见的工夫fileatime(),filectime()当文件的权限,一切者,一切组或其它 inode 中的元数据被更新工夫,fileowner()函数前往文件一切者 $owner = posix_getpwuid(fileowner($file));(非window体系),ileperms()获得文件的权限,
以下为援用的内容:
<?php
$file = 'dirlist.php';
$perms = substr(sprintf('%o', fileperms($file)), -4);
echo $perms;
?>
filesize()前往文件巨细的字节数:
<?php
// 输入相似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';
?>

获得文件的全体信息有个前往数组的函数stat()函数:
以下为援用的内容:
<?php
$file = 'dirlist.php';
$perms = stat($file);
var_dump($perms);
?>
谁人键对应甚么可以查阅具体材料,此处不再睁开。
四:停止语
下面我扼要的总结了一下几个文件操作,假如您纯熟把握以上列出的函数,已在操作的时分没甚么大的成绩,php文件操作的函数变更对照快,如今已十分壮大了,文件这局部也是进修php十分主要的一局部,但愿不要疏忽。

用C语言重新编写,包括可以访问数据库。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。
精灵巫婆 该用户已被删除
沙发
 楼主| 发表于 2015-2-4 06:44:27 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
金色的骷髅 该用户已被删除
板凳
发表于 2015-2-9 17:53:23 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-26 11:29:16 | 只看该作者
爱上php,他也会爱上你。
第二个灵魂 该用户已被删除
5#
发表于 2015-3-7 03:38:18 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
6#
发表于 2015-3-14 07:58:47 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
再现理想 该用户已被删除
7#
发表于 2015-3-24 00:54:15 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
不帅 该用户已被删除
8#
发表于 2015-3-26 02:52:47 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
海妖 该用户已被删除
9#
发表于 2015-3-27 10:06:11 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-28 04:32:00 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
蒙在股里 该用户已被删除
11#
发表于 2015-4-18 14:58:36 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
山那边是海 该用户已被删除
12#
发表于 2015-4-21 17:09:31 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
莫相离 该用户已被删除
13#
发表于 2015-4-28 02:29:05 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
再见西城 该用户已被删除
14#
发表于 2015-5-2 10:32:49 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
若天明 该用户已被删除
15#
发表于 2015-5-4 19:13:13 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
乐观 该用户已被删除
16#
发表于 2015-5-12 00:01:05 | 只看该作者
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
简单生活 该用户已被删除
17#
发表于 2015-6-10 18:23:19 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
爱飞 该用户已被删除
18#
发表于 2015-6-29 03:41:58 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
变相怪杰 该用户已被删除
19#
发表于 2015-7-1 21:50:17 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
透明 该用户已被删除
20#
发表于 2015-7-11 06:53:42 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 21:26

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表