PHP 基础语法
php函数(危险指数五颗星)
php phpinfo();?>
变量
内部变量
phpheader('Content-type:text/html;charset=utf-8'); // 设置编码$name='阿杰';$age=20;echo '你的名字是'.$name;echo '你的年龄是'.$age;?>
外部变量
<html> <head> head> <body><form action="req.php" method="post"><input type="text" name="username"/><input type="password" name="pwd"/><input type="submit" name="提交"/>form> body>html>
PHP代码调用以上HTML代码中的外部变量方法如下所示:
php$u = $_POST['username'];echo $u.'
';$passwd = $_POST['pwd'];echo $passwd.'
';?>
序号 | 全局变量名 | 变量解释说明 |
---|---|---|
1 | $_COOKIE | 得到会话控制中的cookie传值信息 |
2 | $_SESSION | 得到会话控制中的session传值信息 |
3 | $_FILES | 得到文件上传的结果 |
4 | $_GET | 得到get传值的结果 |
5 | $_POST | 得到post传值的结果 |
6 | $_REQUEST | 可以得到get的传值结果,也能得到POST传值的结果 |
环境变量名 | 变量解释说明 |
---|---|
$_SERVER[“REQUEST_METHOD”] | 请求当前PHP页面的方法 |
$_SERVER[“REQUEST_URI”] | 请求当前PHP页面的URI |
$_SERVER[“SERVER_SOFTWARE”] | 用的是哪一种网站服务程序 |
$_SERVER[“REMOTE_ADDR”] | 客户端的IP地址 |
$_SERVER[“SERVER_ADDR”] | 当前服务器的IP地址 |
$_SERVER[“SCRIPT_FILENAME”] | 当前请求文件的路径信息 |
$_SERVER[“HTTP_USER_AGENT”] | 当前访问这个网址的电脑和浏览器的情况 |
$_SERVER[“HTTP_REFERER”] | 上级来源(用户从哪个地址进入当前网页) |
$_SERVER[“REQUEST_TIME”] | 当前的访问时间信息 |
常量
<?php define('name','阿杰');echo '你的名字'.name;?>
以下是一些内置的常量
常量名 | 变量解释说明 |
---|---|
LINE | 当前所在的行 |
FILE | 当前文件在服务器的路径 |
FUNCTION | 当前函数名称 |
CLASS | 当前类名 |
METHOD | 当前成员方法名 |
PHP_OS | PHP运行的操作系统 |
PHP_VERSION | 当前PHP的版本 |
TRAIT | Trait的名字php5.4新加常量 |
DIR | 文件所在的目录信息 |
NAMESPACE | 当前命名空间的名称(区分大小写) |
注释
// 单行注释# 单行注释/*多行注释*/
数据类型
php中有八种数据类型四种标量数据类型boolean(布尔类型)integer(整形)float/double(浮点型)string(字符串型)两种复合数据类型array(数组)object(对象)两种特殊类型resource(资源类型)null(无/空白类型)
数据类型 | 数据类型描述 |
---|---|
boolean(布尔类型) | 布尔型是简单的数据类型,只有两个值false(假)和true(真) |
string(字符串型) | 字符串就是连续的字符序列,如echo“string”; |
integer(整形) | 整形数据类型只能包含整数,这些数据类型可以是负数或者整数 |
float/double(浮点型) | 浮点类型用于存储数字,和整形不同的是浮点型可以有小数点 |
array(数组类型) | 一组相同类型的集合 |
object(对象类型) | 对象是一个实例,使用new命令创建一个对象 |
resource(资源型) | 资源是一种特殊的变量,保存在外部资源的一个应用,资源是通过函数来进行建立的 |
null(空白) | 特殊的值,表示变量没有值,任何变量的初始值都是null |
整形
php// 进制的取值范围是0-7,即0、1、2、3、4、5、6、7$i = 01234;// 10进制$i = 100;// 16进制取值范围是0-f,即0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f$i = 0x6ff;?>
布尔
php$blue=true;$red=false;?>
字符串
php// 单引号$name = '阿杰';// 双引号$name = "阿杰";// 多行字符$line = << 文字 文字 文字ABC;echo $line;?>
浮点
php// 普通声明$f = 124.34525;// 科学声明$f = 0.423534;var_dump($f)?>
判断数据类型
gettype(传入一个变量)能获得变量的类型var_dump(传入一个变量)输出变量类型和值
php$f = 88.8;$type=gettype($f);$s = '男人习惯了不说 忍不住了就抽根烟吧';$type = var_dump($s);?>
判断数据类型方法:
判断函数 | 函数判断描述 |
---|---|
is_int | 判断是否为整数数据类型 |
is_bool | 判断是否为布尔数据类型 |
is_float | 判断是否是浮点数据类型 |
is_string | 判断是否是字符串数据类型 |
is_array | 判断是否是数组数据类型 |
is_object | 判断是否是对象数据类型 |
is_null | 判断数据信息是否为空 |
is_resource | 判断是否为资源数据类型 |
is_scalar | 判断是否为标量 |
is_numeric | 判断是否为数值类型 |
is_callable | 判断是否为函数 |
php//is_*系列函数有个特点,就是如果是这个类型的返回的值为真,不是这个数据类型就返回的是假//声明类型为假$fo = false;if (is_bool($fo)) { echo '执行真区间';}else{ echo '执行假区间';}echo "
";//检查未声明的变量$p是否为空,为空就执行真区间if(is_null($p)) { echo '执行真区间';}else{ echo '执行假区间';}echo "
";//字符串类型的数值,检查执行的真还是假$str = '18.8';if(is_numeric($str)) { echo '执行真区间';}else{ echo '执行假区间';}echo "
";//把sca的值换为整数 浮点 布尔和字符串试试$sca = true;if(is_scalar($sca)) { echo '执行真区间';}else{ echo '执行假区间';}echo "
";//换成echo,is_int试试,为什么echo执行假区间呢?if(is_callable('var_dump')) { echo '执行真区间';}else{ echo '执行假区间';}echo "
";?>
流程控制语句
php// 定义变量i为真 如果是真 输入666 否则999$i = true;if($i){ echo '666';} else{ echo '999';}?>
算数运算方法
符号信息 | 说明 | 举例说明 |
---|---|---|
+ | 表示相加符号 | $x+$y |
- | 表示相减符号 | $x-$y |
* | 表示相乘符号 | $x*$y |
/ | 表示相除符号 | $x/$y |
% | 表示取余或取模符号 | $x%$y |
php $x = 6;$y = 7;// 6+7=13echo $x +$y; ?>
符号信息 | 说明 | 举例说明 |
---|---|---|
$x++ | 表示先赋值后累加运算 | |
$x-- | 表示先赋值后求差运算 | |
++$x | 表示先累加运算后赋值 | $x*$y |
--$x | 表示先求差运算后赋值 | $x/$y |
php $x=5;//先赋值后做加法运算,即将$x的值赋值为$y.$x的值为5,所以将$x的值赋值为$y.$y也是5$y=$x++;//$x的结果输出为6,因为赋值给$y后,$x自己又把自己进行了+1操作。所以,$x结果为6echo "$x $y";?>
符号信息 | 说明 |
---|---|
> | 表示大于符号 |
< | 表示小于符号 |
>= | 表示大于等于符号 |
<= | 表示小于等于符号 |
== | 表示等于符号 |
!= | 表示不等于符号 |
=== | 表示全等(判断类型等于) |
!== | 表示全不等(判断类型不等于) |
php$x=5;$y=6;//因为5大于6不成立,所以为错的,即为false执行了假区间if($x > $y){ echo '变量x大于变量y 成立';}else{ echo '变量x大于变量y 不成立';}?>
程序逻辑运算符号
符号信息 | 说明 | 举例说明 |
---|---|---|
逻辑与(并且关系) | $x和$y都为真则返回为真 | $x and $y $x && $y |
逻辑或(或者关系) | $x和$y均为false为真,其它情况全为真 | $x or $y $x || $y |
逻辑非 | 取反,即true变为false,false变为true | !$x |
逻辑异或 | 相同取false,相异为true |
php$x=true;$y=false;//逻辑与(并且),要求两个都为true才能执行真区间,所以代码中执行假区间if($x && $y) { echo '执行了真区间';}else{ echo '执行了假区间';}
程序位运算
符号信息 | 说明 | 举例说明 |
---|---|---|
按位与And | 将把$a和$b中都为1的位设为1 | $a & $b |
按位或Or | 将把$a和$b中任何一个为1的位设为1 | $a | $b |
按位异或Xor | 将把$a和$b中一个为1另一个为0的位设置为1 | $a ^$b |
按位取反Not | 将把$a中为0的位设为1,反之亦然 | ~$a |
左移 | 将把$a中的位向左移$b次(每一次移动都表示乘以2) | $a |
右移 | 将把$a中的位向左右$b次(每一次移动都表示乘以2) | $a>$b |
php//$x二进制为:$x=5;//$y二进制为:$y=8;//结果为13echo $x ^ $y;?>
三元运算符合其它运算符
符号信息 | 说明 |
---|---|
$x?真代码段:假代码段 | 判断是否为真假?真情况:假情况 |
``反引号 | 反引号中间插入代码,执行系统命令,等价于shell_exec函数 |
@ | 表示抑制错误,把这一行的错误不让它显示出来了,效率低不建议用 |
=> | 数组下标访问符 |
-> | 对象访问符 |
instanceof | 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false |
php// 设x为真 如果x为真输入y 否则输出6$x=true;$x?$y=5:$y=6;//输出5echo $y;?>phpecho '
'
;// 反引号里执行cmd命令echo `systeminfo`;echo '
';
?>
if多条件结构流程
phpIf(判断语句1){ 执行语句体1}elseif(判断语句2){ 执行语句体2} elseif(判断语句n){ 执行语句体n}else{ 最后的else语句可选}?>
php$week=date("4");//判断星期小于6,则输出:还没到周末,继续上班....if($week<"6"){ echo "还没到周末,继续上班....";}?>
php//定义一个随机变量,抵达时间,随机0点至23点$dida = rand(0,23);echo "当前时间为 $dida 点\n";if($dida > 6 && $dida < 10 ){ echo '酒店去泡澡';}elseif ($dida > 10 && $dida < 14){ echo '吃神户牛肉';}elseif($dida >= 19 && $dida < 22){ echo '找个朋友聊聊内心的寂寞';}elseif($dida > 22 && $dida <=23){ echo '酒店去泡澡';}elseif($dida >=1 && $dida <3){ echo '夜店参加舞会';}else{ echo '睡觉或者工作中';}?>
if条件嵌套语句
phpif(判断1){ if(判断2){ 代码段1;}else{ 代码段2;}}else{ if(判断3){ 代码段3;}else{ 代码段4;}}?>
<?php //0表示工作秘书,1表示生活秘书//用代码模拟随机产生当前的行程安排是生活秘书负责还是工作秘书负责$mishu=rand(0,1);if($mishu){ //下雨和不下雨的状态,随机产生;下雨状态为1,不下雨状态为0 $xiayu=rand(0,1); if($xiayu){ //是否购买雨伞;购买了雨伞为1,未购买雨伞为0 $you=rand(0,1); if($you){ echo '下雨天,已经购买雨伞'; }else{ echo '下雨天,需要购买雨伞'; } }else{ //是否购买了防晒霜,购买了为1,未购买为0 $you=rand(0,1); if($you){ echo '未下雨,已经购买了防晒霜'; }else{ echo '未下雨,需要购买防晒霜'; } }}else{ //是否准备好了会议议程,准备好了为1,未准备好为0 $yicheng=rand(0,1); if($yicheng){ echo '已准备好,可以随时出发'; }else{ echo '没有准备好,需要打印,延迟出发'; }}
switch语句使用说明
phpswitch(变量){ //字符串,整形 case 具体值1: 执行代码1; break; case 具体值2: 执行代码2; break; case 具体值3: 执行代码3; break; defult:}?>
上面的break是可选的,上面的default也是可选的,不要在case后面写成分号,后面是冒号.不要在case后面写判断区间,如($foo >20 或者 $foo == 30)
Switch里面的变量最好是整形 字符串 因为布尔判断更适合if..else.
php//定义出行工具$tool=rand(1,6);switch($tool){ case 1: echo '司机开车'; break; case 2: echo '民航'; break; case 3: echo '自己家的专机'; break; case 4: echo '火车动车'; break; case 5: echo '骑马'; break; case 6: echo '游轮'; break;}
while循环语句说明
php//定义需要往返的次数,老外喜欢从0开始计数,所以系统也是从0开始$count=0;//while后面接布尔值判断,为真执行,为假停止//$count小于100的时候执行,也就是$count为0至99的时候执行.//如果$count不小于100了,循环停止执行后续的代码//循环开始处while($count < 100){ echo "这是王总第 $count 次出差
"; //每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了 $count++;}//循环结束?>
do..while与while区别
do..while与while的语法结构基本一样,也是一个布尔型循环,功能也基本一样.
基本语法规定如下:
do{ //代码框}while(判断)
do…while与while区别是,它们的值得检查时机不同.
do…while不论while判断是否成立,先执行一次代码框循环语句,保证会执行一次(表达式的真值在每次循环结束后检查)
然而我们之前的while循环会检查布尔判断区域,成立则执行,不成立则不执行.
php$i=0;do { echo $i;}while($i >0);?>
for循环语句说明
for(表达式1;表达式2;表达式3) 需要执行的代码段;}
phpfor($i=1;$i<=10;$i++) echo ‘分手后第’.$i.’年, 我全都忘了你的样子<br />’;}?>
for循环遍历索引数组
php//声明一个数组,值为1到10$num = array(1,2,3,4,5,6,7,8,9,10);//按照索引数组的特点,下标从0开始。所以1的下标为0,10的下标为9echo $num[0].'
';echo $num[9].'
';//我们可以得到数组中元素的总个数,为10echo count($num) .'
';//遍历这个索引数组的话,我们就可以定义一个变量为$i//$i 的值为0,从0开始//可以设定一个循环条件为:$i 在下标的(9)最大值之内循环for($i = 0 ; $i < count($num) ; $i++){ echo $num[10].'
';}?>
常用操作数组函数
函数信息 | 说明 |
---|---|
array_shift | 弹出数组中的第一个元素 |
array_unshift | 在数组的开始处压入元素 |
array_push | 向数组的末尾处压入元素 |
array_pop | 弹出数组末尾的最后一个元素 |
current | 读出指针当前位置的值 |
key | 读出指针当前位置的键 |
next | 指针向下移 |
prev | 向上移 |
reset | 指针到开始处 |
end | 指针到结束处 |
这些函数,也是面试中基础面试中最爱问到的问题。
序号 | 函数信息 | 说明 | 实例 |
---|---|---|---|
1 | array_combine() | 生成一个数组,用一个数组的值作为键名,另一个数组值作为值 | |
2 | range() | 创建并返回一个包含指定范围的元素的数组。 | |
3 | compact() | 创建一个由参数所带变量组成的数组 | |
4 | array_fill() | 用给定的值生成数组 | |
5 | array_chunk() | 把一个数组分割为新的数组块 | |
6 | array_merge() | 把两个或多个数组合并为一个数组 | |
array_slice() | 在数组中根据条件取出一段值,并返回 | ||
array_diff() | 返回两个数组的差集数组 | ||
array_search() | 在数组中搜索给定的值,如果成功则返回相应的键名 | ||
array_splice() | 把数组中的一部分去掉并用其它值取代 | ||
array_sum() | 计算数组中所有值的和 | ||
in_array() | 检查数组中是否存在某个值 | ||
array_key_exists() | 检查给定的键名或索引是否存在于数组中 | ||
shuffle() | 将数组打乱,保留键值 | ||
count() | 计算数组中的单元数目或对象中的属性个数 | ||
array_flip() | 返回一个键值反转后的数组 | ||
array_keys() | 返回数组所有的键,组成一个数组 | ||
array_values() | 返回数组中所有值,组成一个数组 | ||
array_reverse() | 返回一个元素顺序相反的数组 | ||
array_count_values() | 统计数组中所有的值出现的次数 | ||
array_rand() | 从数组中随机抽取一个或多个元素,注意是键名 | ||
array_unique() | 删除重复值,返回剩余数组 | ||
sort() | 按升序对给定数组的值排序,不保留键名 | ||
rsort() | 对数组逆向排序,不保留键名 | ||
asort() | 对数组排序,保持索引关系 | ||
arsort() | 对数组逆向排序,保持索引关系 | ||
ksort() | 按键名对数组排序 | ||
krsort() | 将数组按照键逆向排序 | ||
natsort() | 用自然顺序算法对数组中的元素排序 | ||
natcasesort() | 自然排序,不区分大小写 | ||
array_filter() | 去掉数组中的空元素或者预定元素 | ||
extract | 将键变为变量名,将值变为变量值 |
功能:弹出数组中的第一个元素
php$mingren = array("邓超", "黄晓明", "宁泽涛", "钟汉良");$dc = array_shift($mingren);echo $dc .'
';print_r($mingren);?>
goto循环语句
phpgoto wan;echo '天王盖地虎';wan:echo '小鸡炖蘑菇';?>
phpfor ($i=0;$i<100;$i++){ echo '第'.$i.'每周往返北京大连
'; if($i == 17){ goto end; }}end:echo '集团公司要求停止此项';?>
PHP函数基本语法
Function 函数名(参数名1=[值1], 参数名2=[值2] , 参数名n=[值n]){ 函数中的功能体 [return 返回值]}
phpfunction php_cn(){ echo "好好学习";}php_cn();php_cn();?>
外部引用
<html> <head> <title>网站页面信息title> head> <body><form action="glob.php" method="post"><input type="text" name="info"/><input type="submit" name="提交"/>form> body>html>phpfunction demo() { echo $_POST['info'];}demo();?>
函数信息 | 说明 | 包含失败 |
---|---|---|
include | 文件继续向下执行,通常用于动态包含 | 返回一条警告 |
require | 代码就不会继续向下执行,通常包含极为重要的文件,这个代码别想执行 | 返回一个致命错误 |
Include_once | 除了原有include的功能外,它还会做once检测,如果文件曾经被包含过,不在包含 | 返回一条警告 |
require_once | 除了原功能以外,会做一次once检测,防止文件反复被包含 | 返回一个致命错误 |
include函数功能实践:
创建一个functions.php文件,里面写上两个函数:
php//functions-test-02文件function demo(){ echo 'aaaa';}function test(){ echo 'bbbb';}?>
在functions.php的同级目录下,在创建一个user.php文件把functions.php文件包含进来.
这样函数信息就可以专门放在functions.php里面,哪需要用到这些函数的时候,就从哪包含进来.
php//user.phpinclude "function-test-02.php";//可以直接调用demo();test();?>
函数信息 | 说明 | 实例 |
---|---|---|
abs() | 求绝对值 输入数字 输出绝对值数字 | $abs=abs(-42);//42 |
ceil() | 进一法取整输入浮点数 输出进一取整 | echo ceil(9.999)//10 |
floor() | 舍去法取整输入浮点数 输出直接舍去小数部分 | echo ceil(9.999)//9 |
fmod() | 浮点数取余输入两个浮点数 输出浮点数余数 | $x=5.7;$y=1.3;$r=fmod($x,$y)//$r 0.5 |
pow() | 返回数的n此房输入基础的n此房 输出乘方值 | echo pow(-1,20)//1 |
round | 浮点数四舍五入输入一个数值 输出保留小数点后多少位默认为0舍入后的结果 | echo round(195583.2)//196 |
sqit | 求平方根输入被开方的数 输出平方根 | echo sqit(9)//3 |
max() | 求最大值输入多个数字或数组 输出返回其中的最大值 | echo max(1.3.5.6.7) //7echo max(array(2,4,5)) //5 |
min() | 求最大值输入多个数字或数组 输出返回其中的最大值 | echo min(1.3.5.6.7) //7echo min(array(2,4,5)) //5 |
mt_rand() | 更好的随机数输入最小和最大 输出返回其中的最大值 | echo min(array(2,4,5)) //5 |
rand() | 随机数输入最小或最大 输出返回其中的最大值随机分配 | echo rand() |
pi() | 获取圆周率值 | rcho pi |
PHP正则表达式
PHP的正则表达示定界符的规定如下:定界符,不能用a-zA-Z0-9\ 其他的都可以用。必须成对出现,有开始就有结束。
举例说明正则符号的定义方式:
例子 说明/中间写正则/ 正确$中间写正则$ 正确%中间写正则% 正确^中间写正则^ 正确@中间写正则@ 正确(中间写正则) 错误 /\//A中间写正则A 错误
正则表达式格式:
preg_match ( string $正则 , string $字符串 , array&$结果] )
功能:根据$正则变量,匹配$字符串变量。如果存在则返回匹配的个数,把匹配到的结果放到$结果变量里。如果没有匹配到结果返回0。
php$zz = '/wq/';$string = 'ssssswqaaaaaa';if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches);}else{ echo '没有匹配到';}?>
函数信息 | 说明 |
---|---|
preg_filter | 执行一个正则表达式搜索和替换 |
preg_grep | 返回匹配模式的数组条目 |
preg_match | 执行一个正则表达式匹配 |
preg_match_all | 执行一个全局正则表达式匹配 |
preg_replace_callback_array | 传入数组,执行一个正则表达式搜索和替换使用回调 |
preg_replace_callback | 执行一个正则表达式搜索并且使用一个回调进行替换 |
preg_replace | 执行一个正则表达式的搜索和替换 |
preg_split | 通过一个正则表达式分隔字符串 |
PHP文件系统管理
fopen、fread、fclose操作读取文件
readfile读取文件函数
int readfile ( string $文件名)功能:传入一个文件路径,输出一个文件。<?php //linux类的读了方式 readfile("/home/paul/test.txt"); //windows类的读取方式 readfile("c:\\oldboy\oldboy\boot.ini");?>注意:上面的代码中windows的斜线是\斜线,可能会转义掉一些字符。因此,我们写的时候写上两个斜线。
file_get_contents打开文件函数
<?php $filename = 'NoAlike.txt'; $filestring = file_get_contents($filename); echo $filestring;?>
file_get_contents打开文件的方式简单、粗暴
resource fopen ( string $文件名, string 模式)string fread ( resource $操作资源, int 读取长度)bool fclose ( resource $操作资源 )
fopen的模式有下面几个,我们来讲一下fopen的模式:
模式 说明r 只读方式打开,将文件指针指向文件头。r+ 读写方式打开,将文件指针指向文件头。w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建
php //你可以创建一个NoAlike.txt,以只读模式打开 $fp = fopen('NoAlike.txt', "r"); //var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource var_dump($fp);?>
php 创建和修改文件内容
file_put_contents写入文件
file_put_contents ( string $文件路径, string $写入数据)功能:向指定的文件当中写入一个字符串,如果文件不存在则创建文件。返回的是写入的字节长度php $data = "在PHP中文网学好PHP,妹子票子不再话下!"; $numbytes = file_put_contents('test.txt', $data); if($numbytes){ echo '写入成功,我们读取看看结果试试:'; echo file_get_contents('test.txt'); }else{ echo '写入失败或者没有权限,注意检查'; }?>
fwrite配合fopen进行写入操作
php $filename = 'test.txt'; $fp= fopen($filename, "w"); $len = fwrite($fp, '我是一只来自北方的狼,却在南方冻成了狗'); fclose($fp); print $len .'字节被写入了\n';?>代码说明:· 不论有没有新建都会打开文件重新写入· 原有的文件内容会被覆盖掉· 文件不存在会创建
r 只能读不能使用fwrite写 r+ 可操作读、写 w 只可以写功能 w+ 即可读又可以写 x 每次写入会干掉原有文件的内容,文件不存在都会创建 a 每次写入都会向文件的尾端追加内容 注:a+ 是增强的追加功能。可以读取时也可以使用。
php 创建临时文件
php //创建了一个临时文件 $handle = tmpfile(); //向里面写入了数据 $numbytes = fwrite($handle, '写入临时文件'); //关闭临时文件,文件即被删除 fclose($handle); echo '向临时文件中写入了'.$numbytes . '个字节';?>
php移动、拷贝和删除文件
重命名文件
rename($旧名,$新名);功能:这个函数返回一个bool值,将旧的名字改为新的名字。<?php //旧文件名 $filename = 'test.txt'; //新文件名 $filename2 = $filename . '.old'; //复制文件 rename($filename, $filename2);?>
复制文件
复制文件,就相当于是克隆技术,将一个原来的东西再克隆成一个新的东西,两个长得一模一样。copy(源文件,目标文件)功能:将指定路径的源文件,复制一份到目标文件的位置。php //旧文件名 $filename = 'copy.txt'; //新文件名 $filename2 = $filename . '_backup'; //修改名字。 copy($filename, $filename2);?>说明:会通过上面的例子,发现多出来了一个文件
删除文件
unlink(指定路径的文件)php $filename = 'test.txt'; if (unlink($filename)) { echo "删除文件成功 $filename!\n"; } else { echo "删除 $filename 失败!\n"; }?>
检测文件属性函数
phpif(file_exists('install.lock')){ echo '已安装,请不要再次进行安装'; exit;}?>
函数信息 | 说明 |
---|---|
file_exists( $指定文件名或者文件路径) | 文件是否存在。 |
is_readable ( $指定文件名或者文件路径) | 文件是否可读 |
is_writeable ( $指定文件名或者文件路径) | 文件是否可写 |
is_executable ( $指定文件名或者文件路径) | 文件是否可执行 |
is_file ( $指定文件名或者文件路径) | 是否是文件 |
is_dir ( $指定文件名或者文件路径) | 是否是目录 |
void clearstatcache ( void ) | 清楚文件的状态缓存 |
php 目录处理函数
php 目录处理函数处理文件夹的基本思想如下:
读取某个路径的时候判断是否是文件夹
是文件夹的话,打开指定文件夹,返回文件目录的资源变量
使用readdir读取一次目录中的文件,目录指针向后偏移一次
使用readdir读取到最后,没有可读的文件返回false
关闭文件目录
函数信息 | 说明 |
---|---|
opendir | 打开文件夹,返回操作资源 |
readdir | 读取文件夹资源 |
is_dir | 判断是否是文件夹 |
closedir | 关闭文件夹操作资源 |
filetype | 显示是文件夹还是文件,文件显示file,文件夹显示dir |
php//设置打开的目录是D盘$dir = "d:/";//判断是否是文件夹,是文件夹if (is_dir($dir)) { if ($dh = opendir($dir)) { //读取到最后返回false,停止循环 while (($file = readdir($dh)) !== false) { echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "
"; } closedir($dh); }}?>
php 文件权限设置
<?php //修改linux系统/var/wwwroot/某文件权限为755chmod("/var/wwwroot/index.html", 755); chmod("/var/wwwroot/index.html", "u+rwx,go+rx"); chmod("/somedir/somefile", 0755); ?>
php文件路径函数
*函数信息* | *说明* |
---|---|
pathinfo | 返回文件的各个组成部份 |
basename | 返回文件名 |
dirname | 文件目录部份 |
parse_url | 网址拆解成各部份 |
http_build_query | 生成url 中的query字符串 |
http_build_url | 生成一个url |
php$path_parts = pathinfo('d:/www/index.inc.php');echo '文件目录名:'.$path_parts['dirname']."
";echo '文件全名:'.$path_parts['basename']."
";echo '文件扩展名:'.$path_parts['extension']."
";echo '不包含扩展的文件名:'.$path_parts['filename']."
"; ?>
php实现文件留言本
index.php 展示输入框和留言内容write.php 向message.txt写入数据message.txt 存入聊天内容
编写index.php
php//设置时区date_default_timezone_set('PRC');//读了内容@$string = file_get_contents('message.txt');//如果$string 不为空的时候执行,也就是message.txt中有留言数据if (!empty($string)) { //每一段留言有一个分格符,但是最后多出了一个&^。因此,我们要将&^删掉 $string = rtrim($string, '&^'); //以&^切成数组 $arr = explode('&^', $string); //将留言内容读取 foreach ($arr as $value) { //将用户名和内容分开 list($username, $content, $time) = explode('$#', $value); echo '用户名为 . $username . '内容为 . $content . '时间为' . date('Y-m-d H:i:s', $time); echo ''; }}?><h1>基于文件的留言本演示h1><form action="write.php" method="post"> 用户名:<input type="text" name="username" /><br /> 留言内容:<textarea name="content">textarea><br /> <input type="submit" value="提交" />form>
write.php
php//追加方式打开文件$fp=fopen('message.txt','a');//设置时间$time=time();//得到用户名$username=trim($_POST['username']);//得到内容$content=trim($_POST['content']);//组合写入的字符串:内容和用户之间分开,使用$#//行与行之间分开,使用&^$string=$username.'$#'.$content.'$#'.$time.'&^';//写入文件fwrite($fp,$string);//关闭文件fclose($fp);header('location:index.php');?>