仓酷云
标题:
PHP网页设计目次,文件操作详谈―php
[打印本页]
作者:
第二个灵魂
时间:
2015-2-4 00:22
标题:
PHP网页设计目次,文件操作详谈―php
掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。
1、引论
在任何盘算机装备中,文件是都是必需的对象,而在web编程中,文件的操作一向是web法式员的头疼的中央,而,文件的操作在cms体系中这是必需的,十分有效的,咱们常常碰到生成文件目次,文件(夹)编纂等操作,如今我把php中的这些函数做一具体总结并实例示范若何利用.,关于对应的函数具体引见,请查阅php手册.此处只总结重点.和需求注重的中央.(这在php手册是没有的.)
2、目次操作
起首引见的是一个从目次读取的函数,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
文件的属性也十分主要,文件属性包含创立工夫,最初修正工夫,一切者,文件组,类型,巨细等.
上面咱们重点谈文件操作.
3、文件操作
● 读文件
起首是一个文件看能不克不及读取(权限成绩),或存在不,咱们可以用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);
?>
谁人键对应甚么可以查阅具体材料,此处不再睁开.
4、停止语
下面我扼要的总结了一下几个文件操作,假如您纯熟把握以上列出的函数,已在操作的时分没甚么大的成绩,php文件操作的函数变更对照快,如今已十分壮大了,文件这局部也是进修php十分主要的一局部,但愿不要疏忽.
在我开始学习PHP以前,我从未想过要做软件工程,即便是在去听过华育国际的关于软件工程的美好前景后,因为我一直都没有想过要与代码打交道,而是想学好所学专业,做个网络工程师或者是网络安全人员。
作者:
蒙在股里
时间:
2015-2-4 12:38
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者:
第二个灵魂
时间:
2015-2-6 14:52
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者:
兰色精灵
时间:
2015-2-9 02:54
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者:
谁可相欹
时间:
2015-2-10 09:16
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者:
愤怒的大鸟
时间:
2015-2-22 01:52
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线 \\\\\\\'_\\\\\\\' ;
作者:
因胸联盟
时间:
2015-3-2 11:35
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者:
飘灵儿
时间:
2015-3-6 19:22
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
作者:
只想知道
时间:
2015-3-7 12:53
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者:
再现理想
时间:
2015-3-11 02:56
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者:
简单生活
时间:
2015-3-24 21:13
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
作者:
山那边是海
时间:
2015-3-27 14:11
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者:
若相依
时间:
2015-4-6 03:11
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者:
小妖女
时间:
2015-4-12 13:27
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线 \\\\\\\'_\\\\\\\' ;
作者:
深爱那片海
时间:
2015-4-16 05:39
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者:
灵魂腐蚀
时间:
2015-5-6 22:50
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
作者:
乐观
时间:
2015-6-5 22:12
使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的
作者:
变相怪杰
时间:
2015-6-11 01:23
我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。
作者:
admin
时间:
2015-6-17 04:54
做为1门年轻的语言,php一直很努力。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2