仓酷云

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

[学习教程] PHP网页设计php 目次与文件处置-郑阿奇(续)

[复制链接]
老尸 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-3 23:37:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学。   1.文件目次操作
最顶层止录是磁盘根目次,用'/'或'//'
以后目次 ./
../暗示apache的目次即htdocs目次
1.创立与删除目次 mkdir
复制代码 代码以下:
<?php
if(mkdir("./path",0700)) //在以后目次中创立path目次
echo "创立胜利";
?>

2.获得和更改以后目次
利用getcwd()函数可以获得以后的任务目次,该函数没有参数。胜利则前往以后的任务目次,掉败则前往FALSE
3.翻开和封闭目次句柄
opendir($dir)
closed($dir_handle)
4.读取目次内容
readdir(),该参数是一个已翻开的目次句柄,与while轮回可以完成对目次的遍历
5.获得指定途径中的目次与文件 。
array scandir(string $directory [, int $sorting_order [, resource $context ]])
申明:$directory为指定途径。参数$sorting_order默许是按字母升序分列,假如设为1暗示按字母的降序分列。
$context是可选参数,是一个资本变量,可以用stream_context_create()函数生成,这个变量保留着与详细的操尴尬刁难象有关的一些数据。
函数运转胜利则前往一个包括指定途径下的一切目次和文件名的数组,掉败则前往FALSE
2.操作文件的普通办法
3.文件的翻开与封闭
1.翻开文件
resource fopen(string $filename , string $mode [, bool $use_include_path [, resource $context ]])
●$filename参数。fopen()函数将$filename参数指定的名字资本绑定到一个流上
●$mode参数。$mode参数指定了fopen()函数会见文件的形式,取值见表4.5。
$mode
说 明
'r'
只读体例翻开文件,从文件头入手下手读
'r+'
读写体例翻开文件,从文件头入手下手读写
'w'
写入体例翻开文件,将文件指针指向文件头。假如文件已存在则删除已有内容,假如文件不存在则测验考试创立它
'w+'
读写体例翻开文件,将文件指针指向文件头。假如文件已存在则删除已有内容,假如文件不存在则测验考试创立它
'a'
写入体例翻开文件,将文件指针指向文件末尾,假如文件已有内容将从文件末尾入手下手写。假如文件不存在则测验考试创立它
'a+'
读写体例翻开文件,将文件指针指向文件末尾。假如文件已有内容将从文件末尾入手下手读写。假如文件不存在则测验考试创立它
'x'
创立并以写入体例翻开文件,将文件指针指向文件头。假如文件已存在,则fopen()挪用掉败并前往FALSE,并生成一条E_WARNING级其余毛病信息。假如文件不存在则测验考试创立它。此选项被PH及今后的版本所撑持,仅能用于当地文件
'x+'
创立并以读写体例翻开文件,将文件指针指向文件头。假如文件已存在,则fopen()挪用掉败并前往FALSE,并生成一条E_WARNING级其余毛病信息。假如文件不存在则测验考试创立它。此选项被PH及今后的版本所撑持,仅能用于当地文件
'b'
二进制形式,用于毗连在其他形式前面。假如文件体系可以辨别二进制文件和文本文件(Windows辨别,而UNIX不辨别),则需求利用到这个选项,保举一向利用这个选项以便取得最大水平的可移植性

●$use_include_path参数。假如需求在include_path(PHP的include途径,在PHP的设置装备摆设文件设置)中搜索文件,
可以将可选参数 $use_include_path的值设为1或TRUE,默许为FALSE。
●$context参数。可选的$context参数只要文件被近程翻开时(如经由过程HTTP翻开)才利用,它是一个资本变量,
个中保留着与fopen()函数详细的操尴尬刁难象有关的一些数据。假如fopen()翻开的是一个HTTP地址,
那末这个变量纪录着HTTP恳求的恳求类型、HTTP版本及其他头信息;假如翻开的是FTP地址,
纪录的多是FTP的主动/自动形式
2.封闭文件
bool fclose(resource $handle)
4.文件的写入
文件写入前需翻开文件,不存在先创立它,普通用fopen()函数创立
●fwrite().文件翻开后,向文件写入内容
int fwrite(resource $handle , string $string [, int $length ])
申明:参数$handle是写入的文件句柄,
$string是将要写入文件中的字符串数据,
$length是可选参数,假如指定了$length,则当写入了$string中的前$length个字节的数据后中断写入。
●file_put_contents()函数。PHP 5还引入了file_put_contents()函数。这个函数的功效与顺次挪用fopen()、fwrite()及fclose()函数的功效一样。语法格局以下:
int file_put_contents(string $filename , string $data [, int $flags [, resource $context ]])
申明:$filename是要写入数据的文件名。
$data是要写入的字符串,$data也能够是数组,但不克不及为多维数组。
在利用FTP或HTTP向近程文件写入数据时,可使用可选参数$flags和$context,这里不详细引见。
写入胜利后函数前往写入的字节数,不然前往FALSE。
●fputcsv()函数。CSV是一种对照经常使用的文件格局,普通以.csv作为扩大名。CSV格局把文件的一行看作是一笔记录,纪录里的字段利用逗号分隔。
在PHP中利用 fputcsv()函数可以把指定的数组格局化为合适CSV文件格局的内容,并写入文件指针指向确当前行。语法格局以下:
int fputcsv(resource $handle [, array $fields [, string $delimiter [, string $enclosure ]]])
申明:参数$handle是要写入的文件句柄。
参数$fields是要格局化的数组。
可选的$delimiter参数用于设定字段分界符(只答应一个字符),默许为逗号。
可选的$enclosure参数设定字段围绕符(只答应一个字符),默许为双引号
5 文件的读取
1.读取恣意长度
fread()函数可以用于读取文件的内容,语法格局以下:
string fread(int $handle, int $length)
申明:参数$handle是已翻开的文件指针,
$length是指定读取的最大字节数,$length的最大取值为8192。
假如读完$length个字节数之前碰到文件开头标记(EOF),则前往所读取的字符,并中断读取操作。
假如读取胜利则前往所读取的字符串,假如失足前往FALSE。
注重:在读取文件后显示文件内容时,文本中能够含有没有法直接显示的字符,如HTML标志。
这时候需求利用htmlspecialchars()函数将HTML标志转化为实体才干显示文件中的字符。
2.读取全部文件
●file()函数。file()函数用于将全部文件读取到一个数组中,语法格局以下:
array file(string $filename [, int $use_include_path [, resource $context ]])
申明:本函数的感化是将文件作为一个数组前往,数组中的每一个单位都是文件中响应的一行,包含换行符在内,
假如掉败则前往FALSE。参数$filename是读取的文件名,参数$use_inclue_path和$context的意义与之前引见的不异
●readfile()函数。readfile()函数用于输入一个文件的内容到阅读器中,语法格局以下:
int readfile(string $filename [, bool $use_include_path [, resource $context ]])
●fpassthru()函数。fpassthru()函数可以将给定的文件指针从以后的地位读取到EOF,并把了局写到输入缓冲区。
要利用这个函数,必需先利用fopen()函数翻开文件,然后将文件指针作为参数传递给fpassthru()函数,
fpassthru()函数把文件指针所指向的文件内容发送到尺度输入。假如操作胜利前往读取到的字节数,不然前往FALSE。
●file_get_contents()函数。file_get_contents()函数可以将全部或局部文件内容读取到一个字符串中,
功效与顺次挪用fopen()、fread()及fclose()函数的功效一样。语法格局以下:
string file_get_contents(string $filename [, int $offset [, int $maxlen ]])
申明:$filename是要读取的文件名,可选参数$offset可以指定从文件头入手下手的偏移量,
函数可以前往从$offset所指定的地位入手下手长度为$maxlen的内容。假如掉败,函数将前往FALSE

3. 读取一行数据
●fgets()函数。fgets()函数可以从文件中读出一行文本,语法格局以下:
string fgets(int $handle [, int $length ])
申明:$handle是已翻开的文件句柄,可选参数$length指定了前往的最大字节数,思索到行停止符,
最多可以前往length-1个字节的字符串。假如没有指定$length,默许为1024个字节
●fgetss()函数与fgets()根基不异,不外fgetss()函数会测验考试从读取的文本中去失落任何html和php标志。
●fgetcsv()函数。fgetcsv()函数可以读取指定文件确当前行,利用CSV格局解析出字段,并前往一个包括这些字段的数组。
语法格局以下:
array fgetcsv(int $handle [, int $length [, string $delimiter [, string $enclosure ]]])
4. 读取一个字符
fgetc()函数。fgetc()函数可以从文件指针处读取一个字符,语法格局为:
string fgetc(resource $handle)
该函数前往$handle指针指向的文件中的一个字符,碰到EOF则前往FALSE
5. 利用指定格局读取文件
fscanf()函数。fscanf()函数可以读取文件中的数据,并依据指定的格局停止格局化,并前往一个数组。语法格局以下:
mixed fscanf(resource $handle , string $format [, mixed &$... ])
格局字符串中的任何空白会与输出流中的任何空白婚配。
这意味着乃至格局字符串中的制表符“\t”也会与输出流中的一个空格字符婚配。
6.文件的上传与下载
1.文件上传
文件上传可以经由过程提交html表单来完成。文件上传停止后,默许存储在一时目次中,这时候必需从一时目次中删除或挪动到其他中央
利用PHP的move_uploaded_file()将其移到其它地位上
move_uploaded_file()函数语法格局以下:
bool move_uploaded_file(string $filename , string $destination)
注重:在将文件挪动之前需求反省文件是不是是经由过程HTTP POST上传的,这可以用来确保歹意的用户没法棍骗剧本去会见本不克不及会见的文件,
这时候需求利用is_uploaded_file()函数。该函数的参数为文件的一时文件名,若文件是经由过程HTTP POST上传的,则函数前往TRUE。
例4.5 将由HTML表单上传的GIF图片文件挪动到html目次中
复制代码 代码以下:
<form enctype="multipart/form-data" action="" method="post">
<input type="file" name="myFile">
<input type="submit" name="up" value="上传文件">
</form>
<!-- HTML表单 -->
<?php
if(isset($_POST['up']))
{
if($_FILES['myFile']['type']=="image/gif") //判别文件格局是不是为GIF
{
if($_FILES['myFile']['error']>0) //判别上传是不是失足
echo "毛病:".$_FILES['myFile']['error']; //输入毛病信息
else
{
$tmp_filename=$_FILES['myFile']['tmp_name']; //一时文件名
$filename=$_FILES['myFile']['name']; //上传的文件名
$dir="html/";
if(is_uploaded_file($tmp_filename)) //判别是不是经由过程HTTP POST上传
{
if(move_uploaded_file($tmp_filename,$dir.$filename)) //上传并挪动文件
{
echo "文件上传胜利!";
//输入文件巨细
echo "文件巨细为:". ($_FILES['myFile']['size']/1024)."kb";
}
else
echo "上传文件掉败!";
}
}
}
else
{
echo "文件格局非GIF图片!";
}
}
?>

2.文件下载
header()函数的感化是向阅读器发送准确的HTTP报头,报头指定了网页内容的类型、页面的属性等信息。
header()函数的功效良多,这里只列出以下几点:
●页面跳转。假如header()函数的参数为“Location: xxx”,页面就会主动跳转到“xxx”指向的URL地址。例如:
header("Location: http://www.百度.com"); //跳转到百度页面
header("Location: first.php"); //跳转到任务目次的first.php页面
●指定网页内容。例如,一样的一个XML格局的文件,假如header()函数的参数指定为“Content-type: application/xml”,
阅读器会将其依照XML文件格局来解析。但假如是“Content-type: text/xml”,阅读器就会将其看作文本解析。
header()函数联合readfile()函数可以下载将要阅读的文件
7.其他经常使用文件函数
1.盘算文件巨细
filesize()函数用于盘算文件的巨细,以字节为单元
filesize()函数联合fread()函数可以完成一次读取全部文件
2.判别文件是不是存在
file_exits()
is_dir()函数用于判别给定文件名是不是是目次
is_file()函数用于判别给定文件名是不是是文件。
is_readable()函数用于判别给定文件是不是可读。
is_writeable()用于判别给定的文件是不是可写
3.删除文件
unlink()
4.复制文件
bool copy(string $source,string $dest),假如目示文件已存在,则将被掩盖
5.挪动、重定名文件
除move_uploaded_file()函数,还有一个rename()函数也能够挪动文件。
语法格局以下:
bool rename ( string $oldname , string $newname [, resource $context ] )
申明:rename()函数次要用于对一个文件停止重定名,$oldname是文件的旧名,$newname为新的文件名。
固然,假如$oldname与$newname的途径不不异,就完成了挪动该文件的功效
6.文件指针操作
PHP中有良多操作文件指针的函数,如rewind()、ftell()、fseek()函数等。之前用过的feof()函数用于测试文件指针是不是处于文件尾部,
也属于文件指针操作函数。
rewind()函数。用于重置文件的指针地位,使指针前往到文件头。它的参数只要一个,就是已翻开的指定文件的文件句柄。
ftell()函数。可以以字节为单元,呈报文件中指针的地位,也就是文件流中的偏移量。它的参数也是已翻开的文件句柄。
fseek()函数。可以用于挪动文件指针,语法格局以下:
int fseek ( resource $handle , int $offset [, int $whence ] )
例4.8 投票统计
复制代码 代码以下:
<form enctype="multipart/form-data" action="" method="post">
<table border="0">
<tr><td bgcolor="#CCCCCC">
<font size=4 color=blue>以后最盛行的Web开辟言语:</font>
</td></tr>
<tr><td><input type="radio" name="vote" value="PHP">PHP</td></tr>
<tr><td><input type="radio" name="vote" value="ASP">ASP</td></tr>
<tr><td><input type="radio" name="vote" value="JSP">JSP</td></tr>
<tr><td><input type="submit" name="sub" value="请投票"> </td></tr>
</table>
</form>
<?php
$votefile="EX4_6_vote.txt"; //用于计数的文本文件$votefile
if(!file_exists($votefile)) //判别文件是不是存在
{
$handle=fopen($votefile,"w+"); //不存在则创立该文件
fwrite($handle,"000"); //将文件内容初始化
fclose($handle);
}
if(isset($_POST['sub']))
{
if(isset($_POST['vote'])) //判别用户是不是投票
{
$vote=$_POST['vote']; //吸收投票值
$handle=fopen($votefile,"r+");
$votestr=fread($handle,filesize($votefile)); //读取文件内容到字符串$votestr
fclose($handle);
$votearray=explode("", $votestr); //将$votestr依据“”朋分
echo "<h3>投票终了!</h3>";
if($vote=='PHP')
$votearray[0]++; //假如选择PHP,则数组第1个值加1
echo "今朝PHP的票数为:<font size=5 color=red>".$votearray[0]."</font><br>";
if($vote=='ASP')
$votearray[1]++; //假如选择ASP,则数组第2个值加1
echo "今朝ASP的票数为:<font size=5 color=red>".$votearray[1]."</font><br>";
if($vote=='JSP')
$votearray[2]++; //假如选择JSP,则数组第3个值加1
echo "今朝JSP的票数为:<font size=5 color=red>".$votearray[2]."</font><br>";
//盘算总票数
$sum=$votearray[0]+$votearray[1]+$votearray[2];
echo "总票数为:<font size=5 color=red>".$sum."</font><br>";
$votestr2=implode("",$votearray); //将投票后的新数组用“”毗连成字符串$votestr2
$handle=fopen($votefile,"w+");
fwrite($handle,$votestr2); //将新字符串写入文件$votefile
fclose($handle);
}
else
{
echo "<script>alert('未选择投票选项!')</script>";
}
}
?>
不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板
愤怒的大鸟 该用户已被删除
18#
发表于 2015-7-20 18:54:25 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
飘飘悠悠 该用户已被删除
17#
发表于 2015-7-20 00:53:06 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
小魔女 该用户已被删除
16#
发表于 2015-7-17 00:35:11 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
分手快乐 该用户已被删除
15#
发表于 2015-7-8 23:24:53 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
兰色精灵 该用户已被删除
14#
发表于 2015-6-18 22:40:15 | 只看该作者
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
变相怪杰 该用户已被删除
13#
发表于 2015-6-3 20:52:15 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
admin 该用户已被删除
12#
发表于 2015-5-6 23:17:47 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
飘灵儿 该用户已被删除
11#
发表于 2015-5-4 19:05:59 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
简单生活 该用户已被删除
10#
发表于 2015-4-12 19:45:21 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
若天明 该用户已被删除
9#
发表于 2015-4-10 02:29:27 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
谁可相欹 该用户已被删除
8#
发表于 2015-4-8 18:28:43 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
爱飞 该用户已被删除
7#
发表于 2015-3-20 16:10:19 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
再见西城 该用户已被删除
6#
发表于 2015-3-13 07:08:35 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
精灵巫婆 该用户已被删除
5#
发表于 2015-3-6 19:51:56 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
再现理想 该用户已被删除
地板
发表于 2015-2-28 15:29:23 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
柔情似水 该用户已被删除
板凳
发表于 2015-2-27 07:42:18 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
沙发
发表于 2015-2-9 14:48:26 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
若相依 该用户已被删除
楼主
发表于 2015-2-4 03:49:31 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-14 14:35

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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