《PHP》精简Notes
资料来源:PHP8快速入门在线教程(基础+实战)
@Seymour0314
一、简介
二、数据类型
2.1 标量数据类型
数据类型
布尔型Boolean
整型Integer
浮点型Float
字符串String
输出
echo
输出数据值
var_dump
打印数据类型和值
1 2 3 4 5 <?php $y = '你好呀' ; var_dump ($y ); echo '<hr>' ; ?>
中文字符采用UTF-8,为3字节。
字符串写双引号和单引号的区别
双引号内可以直接写$
作为变量显示,
单引号只是作为字符串显示,并不看作变量。
常量
1 2 3 4 5 6 7 define ('HOST' ,'127.0.0.1' );echo HOST;const NAME = '小白' ;echo NAME;
2.2 复合数据类型
复合数据类型
数组array
对象object
可调用callable
可迭代iterable
特殊数据类型
1 2 3 4 <?php $x = null ; var_dump ($x ); ?>
2.2.1 数组array
说是数组,实际上像字典,本身是键和值组成。
两种表示方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php $arr1 = array ( '小黄' , '小兰' , '小黑' ); var_dump ($arr1 ); echo '<br/>' ; $arr2 = [ '小黄' , '小兰' , '小黑' ]; var_dump ($arr2 ); ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $arr1 = array ( 'A' => '小黄' , '小兰' , '小黑' ); var_dump ($arr1 ); echo '<br>' ; echo $arr1 ['A' ],'<br>' ; echo $arr1 [0 ],'<br>' ; print_r ($arr1 ); echo '<br>' ; echo '我的名字是' . $arr1 [0 ]; ?>
多维数组
嵌套即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <?php $arr = array ( 'A' => '小黄' , '小兰' , '小黑' , array ( 1 , '2' ), 'B' => [ 'ab' , 'cd' ] ); print_r ($arr ); ?>
循环
1 2 3 4 5 6 7 8 9 10 <?php $arr = array ( 'A' => '小黄' , '小兰' , '小黑' , ); foreach ($arr as $k => $v ){ echo $k .$v .'<br>' ; } ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?php $arr = array( [ 'title' => '学习', 'content' => '快乐学习' ], [ 'title' => '吃饭', 'content' => '快乐吃饭' ], [ 'title' => '睡觉', 'content' => '快乐睡觉' ], ); foreach($arr as $k => $v){ ?> <h3><?php echo $arr[$k]['title'] ?></h3> <p><?php echo $arr[$k]['content'] ?></p> <?php } ?>
三、流程操作
3.1 条件判断
三元运算符
1 2 3 4 <?php $x = '' ; var_dump ($x ?'学习' :'睡觉' ); ?>
语句1
1 2 3 4 5 6 7 8 9 10 11 <?php $x = '' ; $y = '睡觉' ; if ($x ){ echo $x ; }elseif ($y ){ echo $y ; }else { echo '没有' ; }; ?>
语句2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php $x = '睡觉' ; switch ($x ){ case '学习' : echo '要学习辣' ; break ; case '睡觉' : echo '要睡觉辣' ; break ; case '吃饭' : echo '要吃饭辣' ; break ; default : echo '不知道' ; break ; }; ?>
php8新特性match
1 2 3 4 5 6 7 8 <?php $x = '睡觉' ; echo match ($x ){ '学习' ,'study' => '要学习study辣' , '睡觉' ,'sleep' => '要睡觉sleep辣' , default => '不知道干嘛' }; ?>
3.2 系统函数
是否存在函数
用!empty()
比较好,区别是对于0
的判断不一样。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php if ($x ){ echo '我是A' ; } if (isset ($x )){ echo '我是B' ; } if (empty ($x )){ echo '我是C' ; } ?>
函数
官网参考:PHP手册:函数参考
3.2.1 String函数
参考:字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 strlen — 获取字符串长度 strrev — 反转字符串 str_replace — 子字符串替换 trim — 去除字符串首尾处的空白字符(或者其他字符) explode — 使用一个字符串分割另一个字符串,得到数组 str_split — 将字符串按长度拆分,转换为数组 strpos — 查找字符串首次、n次出现的位置 str_contains — 确定字符串是否包含指定子串 md5 — 计算字符串的 MD5 散列值 strtolower — 将字符串转化为小写 strtoupper — 将字符串转化为大写 str_starts_with — 检查字符串是否以指定子串开头 str_ends_with — 检查字符串是否以指定子串结尾
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 <?php $str = "Mary Had A Little Lamb and She LOVED It So" ;$str = strtolower ($str );echo $str ; echo strrev ("Hello world!" ); $text = "\t\tThese are a few words :) ... " ;$trimmed = trim ($text ); $bodytag = str_replace ("%body%" , "black" , "<body text='%body%'>" );$vowels = array ("a" , "e" , "i" , "o" , "u" , "A" , "E" , "I" , "O" , "U" );$onlyconsonants = str_replace ($vowels , "" , "Hello World of PHP" );$phrase = "You should eat fruits, vegetables, and fiber every day." ;$healthy = array ("fruits" , "vegetables" , "fiber" );$yummy = array ("pizza" , "beer" , "ice cream" );$newphrase = str_replace ($healthy , $yummy , $phrase );$str = "Hello Friend" ; $arr1 = str_split ($str );$arr2 = str_split ($str , 3 );$pizza = "piece1 piece2 piece3 piece4 piece5 piece6" ;$pieces = explode (" " , $pizza );echo $pieces [0 ]; echo $pieces [1 ]; $string = 'The lazy fox jumped over the fence' ;if (str_contains ($string , 'Lazy' )) { echo 'The string "Lazy" was found in the string' ; } else { echo '"Lazy" was not found because the case does not match' ; } if (str_ends_with ('abc' , '' )) { echo "All strings end with the empty string" ; } $str = 'abcdef' ;echo strlen ($str ); $newstring = 'abcdef abcdef' ;$pos = strpos ($newstring , 'a' , 1 ); $str = 'apple' ;if (md5 ($str ) === '1f3870be274f6c49b3e31a0c6728957f' ) { echo "Would you like a green or red apple?" ; } ?>
3.2.2 array函数
参考:array函数
1 2 3 4 5 6 7 8 9 count — 统计数组、Countable 对象中所有元素的数量 sort — 对数组升序排序 list — 把数组中的值赋给一组变量 array_flip — 交换数组中的键和值 array_keys — 返回数组中部分的或所有的键名 array_values — 返回数组中所有的值 array_merge — 合并一个或多个数组 array_reverse — 返回单元顺序相反的数组 array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 <?php $a [0 ] = 1 ;$a [1 ] = 3 ;$a [2 ] = 5 ;var_dump (count ($a ));$fruits = array ("lemon" , "orange" , "banana" , "apple" );sort ($fruits );$info = array ('coffee' , 'brown' , 'caffeine' );list ($drink , $color , $power ) = $info ;echo "$drink is $color and $power makes it special.\n" ;$input = array ("oranges" , "apples" , "pears" );$flipped = array_flip ($input );$array1 = array ("color" => "red" , 2 , 4 );$array2 = array ("a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4 );$result = array_merge ($array1 , $array2 );$array = array (0 => 'blue' , 1 => 'red' , 2 => 'green' , 3 => 'red' );$key = array_search ('green' , $array ); ?>
3.3 自定义函数
1 2 3 4 5 6 <?php function sumup ($x ,$y ,$z =30 ) { return $x + $y + $z ; } echo sumup (10 ,20 );?>
3.4 运算符
1 2 3 四则运算、取余 + - * / % 自增自减 ++ -- 连接字符串 .
数字可以作为字符串直接使用.
进行相连,但是必须与.
之间有空格分开。
1 2 3 与 或 异或 非 and or xor ! && ||
3.5 循环
可以加入语句
break 结束整个循环流程
continue 跳过此次循环次
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?php $num1 = 1 ;while ($num1 <4 ){ echo $num1 . '<br>' ; $num1 ++; } echo '<hr>' ;$num2 = 1 ;do { echo $num2 . '<br>' ; $num2 ++; }while ($num2 <1 ); echo '<hr>' ;for ($num3 =1 ;$num3 <4 ;$num3 ++){ echo $num3 . '<br>' ; } ?>
3.6 JIT(php8新特性)
四、MySQL数据库
4.1 数据类型
1 2 3 4 5 tinyint 极小整数类型 0,255 -128,127 int 整数 0,4294967295 -2147483648,2147483647 float 单精度浮点数 double 双精度浮点数 decimal 定点小数m,n
1 2 3 4 blob 二进制数据(图片、视频等) text 长文本数据 char 定长字符串0-255B(很少用) varchar 变长字符串0-65535B
1 2 3 4 5 year 年 3B YYYY date 日期 3B YYYY-MM-DD time 时间 3B HH:MM:SS datetime 日期时间 8B YYYY-MM-DD HH:MM:SS timestamp 时间戳 4B YYYY-MM-DD HH:MM:SS
4.2 PHP操作MySQL
PDO
Php Data Object,php数据对象
由PDO连接数据库,统一了连接各种数据库的方式。
使用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $pdo = new PDO ('mysql:host=localhost;dbname=test1' ,'test1' ,'test1.123' );$pdo ->query ('SET NAMES utf8;' ); $stmt = $pdo ->prepare ('SELECT * FROM `student`;' );$stmt ->execute ();$arr = $stmt ->fetchAll ();print_r ($arr );echo '<hr>' ;echo '第一个同学是' . $arr [0 ]['name' ];?>
4.3 SQL语句
五、PHP语法
5.1 超全局变量
1 2 3 4 5 6 7 8 9 $_GET 收集来自method="get"的表单中的值 $_POST 收集来自method="post"的表单中的值 $_REQUEST 包含$_POST、$_GET、$_COOKIE $GLOBALS 全部变量的全局组合数组 $_COOKIE 常用于识别用户 $_SESSION 存储关于用户会话session的信息 $_FILES 用来获取通过POST方法上传文件的相关信息 $_SERVER 服务器和执行环境信息 $_ENV 环境变量
$_GET
1 2 3 4 5 6 7 8 9 10 11 12 <?php if(!empty($_GET)){ print_r($_GET); echo '<br>'; echo $_GET['id'] . $_GET['name']; } ?> <form action="" method="get"> 学号:<input type="text" name="id"> 姓名:<input type="text" name="name"> <input type="submit" value="点我提交"> </form>
$_POST
1 2 3 4 5 6 7 8 9 10 11 12 <?php if(!empty($_POST)){ print_r($_POST); echo '<br>'; echo $_POST['id'] . $_POST['name']; } ?> <form action="" method="post"> 学号:<input type="text" name="id"> 姓名:<input type="text" name="name"> <input type="submit" value="点我提交"> </form>
$_REQUEST
1 2 3 4 5 6 7 8 9 10 <?php if(!empty($_REQUEST)){ print_r($_REQUEST); } ?> <form action="" method="post"> 学号:<input type="text" name="id"> 姓名:<input type="text" name="name"> <input type="submit" value="点我提交"> </form>
$GLOBALS
1 2 3 4 5 6 7 8 9 10 11 <?php $x = 20; if(!empty($GLOBALS)){ print_r($GLOBALS); } ?> <form action="" method="post"> 学号:<input type="text" name="id"> 姓名:<input type="text" name="name"> <input type="submit" value="点我提交"> </form>
5.2 结合MySQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php $pdo = new PDO('mysql:host=localhost;dbname=test1','test1','test1.123'); $pdo->query('SET NAMES utf8;'); ?> <form action="" method="post"> 查询学号:<input type="text" name="id"> <input type="submit" value="点我提交"> </form> 查询结果: <?php if(!empty($_POST)){ $stmt = $pdo->prepare('SELECT * FROM `student` WHERE `student_id` = ' . $_POST['id'] . ' ;'); $stmt->execute(); $arr = $stmt->fetchAll(); echo $arr[0]['name']; } ?>
1 2 3 4 5 6 7 8 9 10 11 12 13 <?php $pdo = new PDO('mysql:host=localhost;dbname=test1','test1','test1.123'); $pdo->query('SET NAMES utf8;'); ?> 查询结果: <?php if(!empty($_GET)){ $stmt = $pdo->prepare('SELECT * FROM `student` WHERE `student_id` = ' . $_GET['id'] . ' ;'); $stmt->execute(); $arr = $stmt->fetchAll(); echo $arr[0]['name']; } ?>
这里模拟直接写在url里,以后可以写在跳转链接里如www.domain.cn/artile?id=2
5.3 类与对象
类是具有相同属性和操作的一组对象的集合
对象是类的一个实例
成员变量:属性
成员方法:行为
魔术方法
__construct
构造方法
__destruct
析构方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <?php class Student { public $status = '未知status' ; public $name = '未知name' ; public function __construct ($status , $name ) { $this ->status = $status ; $this ->name = $name ; } public function fun1 ( ) { return $this ->name . '和fun1' ; } public function __destruct ( ) { echo '<hr>' ; echo '析构方法执行了' ; } } $bai = new Student ("学生" ,"小白" );echo $bai ->status;echo '<br>' ;echo $bai ->fun1 ();?>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Student { public $id ; protected $status ; private $name ; public function fun1 ( ) { return $this ->name; } protected function fun2 ( ) { return $this ->name; } private function fun3 ( ) { return $this ->name; } }
1 2 3 4 5 6 class HighSchoolStudent extends Student { } $hong = new HighSchoolStudent ("高中生" ,"小红" );echo $hong ->fun1 ();
1 2 3 4 5 6 7 8 9 class Student { public static $name ; public static function fun2 ( ) { return Student ::$name ; } } echo Student ::$name ;echo Student ::fun2 ();
1 2 3 4 5 6 7 8 9 10 11 12 abstract class Student { protected $name ; abstract public function fun3 ( ) ; } class HighSchoolStudent extends Student { public function fun3 ( ) { retrun $this ->name; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 interface file { public function fun4 ( ) ; public function fun5 ($x ) ; } class Student implements file { public function fun4 ( ) { return 0 ; } public function fun5 ($x ) { return $x ; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 interface file { const HOST = "localhost" ; const DB = "test1" ; const USER = "root" ; const PASSWORD = "password" } class Student implements file { private $host = file::HOST ; private $db = file::DB ; private $user = file::USER ; private $password = file::PASSWORD ; }
1 2 3 4 final class Student { }
5.4 命名空间
1 2 3 4 5 6 7 8 9 10 11 12 13 namespace one { const NAME = '小白'; public function fun1 ( ) { } } namespace two { const NAME = '小黑'; public function fun1 ( ) { } }
1 2 3 4 5 6 7 8 9 10 11 namespace one ;const NAME = '小白' ;public function fun1 ( ) { } namespace two ;const NAME = '小黑' ;public function fun1 ( ) { }
1 2 3 4 5 6 7 8 9 10 11 12 13 namespace one \aa { const NAME = '小绿'; public function fun1 ( ) { } } namespace one \aa \AA { const NAME = '小黄'; public function fun1 ( ) { } }
1 2 3 4 5 echo \two\fun1 ();use \one \aa \AA as t ;echo t\fun1 ();
1 2 3 4 5 6 7 require 'one\one.php' ;require 'two\two.php' ;use one \one as t1 ;use two \two as t2 ;echo t1\fun1 ();echo t2\fun1 ();
5.5 php8新特性
六、补充内容
来源:CSDN:PHP
6.1 phpinfo()
phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。
6.2 其他环境变量
6.3 系统常量
6.4 字符串的声明方法
在PHP语言中声明字符串有三种方式:
1、用单引号声明
2、用双引号声明
3、用字界符声明
字界符声明
1、在变量后面的等号写三个小于号 <<<
2、然后在<<<后面写上字符(建议英文大写字符)
3、然后换行写上任意想写的字符
4、写完后,顶行。在行最开始处,再写上<<<后面的字符和分号。
1 2 3 4 5 6 7 8 9 10 11 12 <?php $dingjie = <<<ABC 如果 非要在这个测试 前 面<br /> 加上一段 <i>有趣的话</i> 我想说,<h1>努力学习不好么<h1> ABC ;echo $dingjie ?>
那双引号和单引号有什么区别呢:
双引号解析变量,但是单引号不解析变量
在双引号里面插入变量,变量后面如果有英文或中文字符,会把这个字符和变量拼起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
双引号解析转义字符,单引号不解析转义字符。但是单引号能解析\
单引号效率高于双引号,尽可能使用单引号
双引号和单引号可以互相嵌套,双引号中可以插入单引号,单引号当中插入变量,这个变量会被解析。
神奇的字符串拼接胶水——(.)点,用来拼接字符串。
一般将定界符声明字符串视为双引号一样的功能来看待。
6.5 查看和判断数据类型
gettype(传入一个变量)能获得变量的类型
var_dump(传入一个变量)输出变量类型和值
使用is_*系列函数,is_types这一系列的函数,来进行判断某个数据属于哪种类型,如果是这个类型返回真,不是这个类型返回假。
1 2 3 4 5 6 7 8 9 10 11 12 $float = 88.8 ;$type = gettype ($float );$str = 'aa' ;$type = var_dump ($str );$fo = false ;if (is_bool ($fo )) { echo '执行真区间' ; }else { echo '执行假区间' ; }
6.6 位运算
1 2 3 4 5 6 $x =5 ;$y =8 ;echo $x ^ $y ;
6.7 其他运算符
6.8 文件包含
include函数功能实践:
创建一个functions.php
文件,里面写上几个函数。
1 2 3 4 5 6 7 8 9 <?php function demo ( ) { echo 'aaaa' ; } function test ( ) { echo 'bbbb' ; } ?>
在functions.php
的同级目录下,在创建一个user.php
文件把functions.php
文件包含进来。
这样函数信息就可以专门放在functions.php
里面,哪需要用到这些函数的时候,就从哪包含进来。
1 2 3 4 5 6 7 <?php include "functions.php" ;demo ();test ();?>
6.9 数学常用函数
6.10 字符串常用函数
6.11 时间信息函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $mytime = getdate ();echo "年 :" .$mytime ['year' ]."\n" ;echo "月 :" .$mytime ['mon' ]."\n" ;echo "日 :" .$mytime ['mday' ]."\n" ;echo "时 :" .$mytime ['hours' ]."\n" ;echo "分 :" .$mytime ['minutes' ]."\n" ;echo "秒 :" .$mytime ['seconds' ]."\n" ;echo "一个小时中的第几钟 :" .$mytime ['minutes' ]."\n" ;echo "这是一分钟的第几秒 :" .$mytime ['seconds' ]."\n" ;echo "星期名称 :" .$mytime ['weekday' ]."\n" ;echo "月份名称 :" .$mytime ['month' ]."\n" ;echo "时间戳 :" .$mytime [0 ]."\n" ;?>
6.12 操作数组函数
6.13 PHP正则表达式
1 2 3 4 5 6 7 8 9 10 11 12 例子 说明 /中间写正则/ 正确 $中间写正则$ 正确 %中间写正则% 正确 ^中间写正则^ 正确 @中间写正则@ 正确 (中间写正则) 错误 A中间写正则A 错误 \ 是转义字符,如果在以后正则表达示里面需要匹配/: 写法:/ \/ / 写法:# \/ #
匹配
preg_match ( string $正则 , string $字符串 , array&$结果] )
功能:
根据正则变量
,匹配字符串变量
。
如果存在则返回匹配的个数,把匹配到的结果放到$结果变量
里。如果没有匹配到结果返回0。
1 2 3 4 5 6 7 8 9 10 <?php $zz = '/wq/' ;$string = 'ssssswqaaaaaa' ;if (preg_match ($zz , $string , $matches )){ echo '匹配到了,结果为:' ; var_dump ($matches ); }else { echo '没有匹配到' ; } ?>
6.14 正则函数
6.15 文件系统管理
我们会点鼠标右键删除文件、会control+c(或右键)复制、粘贴文件,会新建一些文件,检测这个文件是不是只读文件。在电脑里面进行的这些操作,在代码里面如果能操作就好了。因为,如果有了这些操作。我们能做很多事情了:可不可以写入修改配置文件、是不是可以做PHP安装的时候检测文件的权限、是不是可以做生成Html文件等等很多不同的操作,总之其他太多太多的地方用到了文件操作。
读取文件
1、readfile读取文件函数
1 2 readfile ( string : $文件名)功能:传入一个文件路径,输出一个文件。
1 2 3 4 5 6 7 <?php readfile ("/home/paul/test.txt" ); readfile ("c:\\oldboy\oldboy\boot.ini" ); ?>
2、file_get_contents打开文件函数
1 2 3 4 5 <?php $filename = 'NoAlike.txt' ; $filestring = file_get_contents ($filename ); echo $filestring ; ?>
3、fopen、fread、fclose操作读取文件
1 2 3 resource fopen ( string $文件名, string 模式) string fread ( resource $操作资源, int 读取长度)bool fclose ( resource $操作资源 )
fopen的模式:
1 2 3 4 5 6 <?php $fp = fopen ('NoAlike.txt' , "r" ); var_dump ($fp ); ?>
创建和修改文件内容
1、file_put_contents写入文件
1 2 file_put_contents ( string $文件路径, string $写入数据)功能:向指定的文件当中写入一个字符串,如果文件不存在则创建文件。返回的是写入的字节长度
1 2 3 4 5 6 7 8 9 10 <?php $data = "在PHP中文网学好PHP,妹子票子不再话下!" ; $numbytes = file_put_contents ('test.txt' , $data ); if ($numbytes ){ echo '写入成功,我们读取看看结果试试:' ; echo file_get_contents ('test.txt' ); }else { echo '写入失败或者没有权限,注意检查' ; } ?>
2、fwrite配合fopen进行写入操作
1 2 3 4 5 6 7 8 9 10 11 <?php $filename = 'test.txt' ; $fp = fopen ($filename , "w" ); $len = fwrite ($fp , '我是一只来自北方的狼,却在南方冻成了狗' ); fclose ($fp ); print $len .'字节被写入了\n' ; ?> 代码说明: · 不论有没有新建都会打开文件重新写入 · 原有的文件内容会被覆盖掉 · 文件不存在会创建
创建临时文件
1 2 3 4 5 6 7 8 9 <?php $handle = tmpfile (); $numbytes = fwrite ($handle , '写入临时文件' ); fclose ($handle ); echo '向临时文件中写入了' .$numbytes . '个字节' ; ?>
移动、拷贝和删除文件
1、重命名文件:
1 2 rename ($旧名,$新名);功能:这个函数返回一个bool 值,将旧的名字改为新的名字。
1 2 3 4 5 6 7 8 <?php $filename = 'test.txt' ; $filename2 = $filename . '.old' ; rename ($filename , $filename2 ); ?>
2、复制文件
1 2 copy (源文件,目标文件)功能:将指定路径的源文件,复制一份到目标文件的位置。
1 2 3 4 5 6 7 8 <?php $filename = 'copy.txt' ; $filename2 = $filename . '_backup' ; copy ($filename , $filename2 ); ?>
3、删除文件
删除文件就是将指定路径的一个文件删除,不过这个删除是直接删除。使用的是windows电脑,你在回收站看不到这个文件,你只会发现这个文件消失了。
1 2 3 4 5 6 7 8 <?php $filename = 'test.txt' ; if (unlink ($filename )) { echo "删除文件成功 $filename !\n" ; } else { echo "删除 $filename 失败!\n" ; } ?>
4、检测文件属性函数
假设安装界面的网址是:install.php,安装的锁文件是install.lock。我们就可以检测install.lock文件是否存在。
1 2 3 4 5 6 <?php if (file_exists ('install.lock' )){ echo '已安装,请不要再次进行安装' ; exit ; } ?>
文件权限设置
1 2 3 4 5 6 7 <?php chmod ("/var/wwwroot/index.html" , 755 ); chmod ("/var/wwwroot/index.html" , "u+rwx,go+rx" ); chmod ("/somedir/somefile" , 0755 ); ?>
6.16 文件属性函数
6.17 目录处理函数
php 目录处理函数处理文件夹的基本思想如下:
读取某个路径的时候判断是否是文件夹
是文件夹的话,打开指定文件夹,返回文件目录的资源变量
使用readdir读取一次目录中的文件,目录指针向后偏移一次
使用readdir读取到最后,没有可读的文件返回false
关闭文件目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php $dir = "d:/" ;if (is_dir ($dir )) { if ($dh = opendir ($dir )) { while (($file = readdir ($dh )) !== false ) { echo "文件名为: $file : 文件的类型是: " . filetype ($dir . $file ) . "<br />" ; } closedir ($dh ); } } ?>
6.18 文件路径函数
我们经常会遇到处理文件路径的情况。例如:
文件后缀需要取出来
路径需要取出名字不取目录
只需要取出路径名中的目录路径
或者把网址中的各个部份进行解析取得独立值
甚至是自己组成一个url出来
1 2 3 4 5 6 7 <?php $path_parts = pathinfo ('d:/www/index.inc.php' );echo '文件目录名:' .$path_parts ['dirname' ]."<br />" ;echo '文件全名:' .$path_parts ['basename' ]."<br />" ;echo '文件扩展名:' .$path_parts ['extension' ]."<br />" ;echo '不包含扩展的文件名:' .$path_parts ['filename' ]."<br />" ; ?>
七、实战补充
7.1 文件留言本
1 2 3 index.php 展示输入框和留言内容 write.php 向message.txt写入数据 message.txt 存入聊天内容
index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <?php date_default_timezone_set ('PRC' );@$string = file_get_contents ('message.txt' ); if (!empty ($string )) { $string = rtrim ($string , '&^' ); $arr = explode ('&^' , $string ); foreach ($arr as $value ) { list ($username , $content , $time ) = explode ('$#' , $value ); echo '用户名为<font color="gree">' . $username . '</font>内容为<font color="red">' . $content . '</font>时间为' . date ('Y-m-d H:i:s' , $time ); echo '<hr />' ; } } ?> <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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?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' );?>