PHP

基本的 PHP 语法

PHP 脚本以 结束:

PHP 文件的默认文件扩展名是 “.php”。

PHP echo 和 print 语句

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

goto循环语句

王同学每周往返,但有一个特例:项目失败后或者集团临时通知除外,就可以不再这么每周往返了.

基本语法:

1
2
3
4
5
6
<?php
goto wan;
echo '天王盖地虎';
wan:
echo '小鸡炖蘑菇';
?>

基本编写:

1
2
3
4
5
6
7
8
9
<?php
for ($i=0;$i<100;$i++){
echo '第'.$i.'每周往返北京大连<br />';
if($i == 17){
goto end;
}
}
end:
echo '停止此项';

PHP文件系统管理

(1)fopen、fread、fclose操作读取文件

1.readfile读取文件函数

1
2
readfile ( string: $文件名)
功能:传入一个文件路径,输出一个文件。

下面的这一段代码中,只要传入文件名或者指定的文件路径就把文件读取出来了。

1
2
3
4
5
6
7
<?php
//linux类的读了方式
readfile("/home/paul/test.txt");
//windows类的读取方式
readfile("c:\oldboyoldboyoot.ini");
?>
注意:上面的代码中windows的斜线是斜线,可能会转义掉一些字符。因此,我们写的时候写上两个斜线。

2、file_get_contents打开文件函数

1
2
3
4
5
<?php
$filename = 'NoAlike.txt';
$filestring = file_get_contents($filename);
echo $filestring;
?>

3、fopen、fread、fclose操作读取文件

上面file_get_contents打开文件的方式简单、粗暴。

1
2
3
resource fopen	 	    ( string $文件名, string 模式)
string fread ( resource $操作资源, int 读取长度)
bool fclose ( resource $操作资源 )

fopen的模式有下面几个

image-20230809110222323

1
2
3
4
5
6
<?php
//你可以创建一个NoAlike.txt,以只读模式打开
$fp = fopen('NoAlike.txt', "r");
//var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource
var_dump($fp);
?>

(2)PHP创建和修改文件内容

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
<?php
$filename = 'test.txt';
$fp= fopen($filename, "w");
$len = fwrite($fp, '我是一只来自北方的狼,却在南方冻成了狗');
fclose($fp);
print $len .'字节被写入了
';
?>

代码说明:
· 不论有没有新建都会打开文件重新写入
· 原有的文件内容会被覆盖掉
· 文件不存在会创建

(3) PHP创建临时文件

我们之前创建的文件都是永久文件,而创建临时文件在我们平时的项目开发中也非常有用,创建临时文件的好处:文件操作完成后即删除,不需要去维护这个文件的删除状态。
1
2
3
4
5
6
7
8
9
<?php
//创建了一个临时文件
$handle = tmpfile();
//向里面写入了数据
$numbytes = fwrite($handle, '写入临时文件');
//关闭临时文件,文件即被删除
fclose($handle);
echo '向临时文件中写入了'.$numbytes . '个字节';
?>

(4) php移动、拷贝和删除文件

我们日常在处理文件的时候,可以删除文件、重命名文件也可以也可复制文件。

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
unlink(指定路径的文件)

代码操作示例:

1
2
3
4
5
6
7
8
9
10
<?php
$filename = 'test.txt';
if (unlink($filename)) {
echo "删除文件成功 $filename!
";
} else {
echo "删除 $filename 失败!
";
}
?>

4、检测文件属性函数

假设安装界面的网址是:install.php,安装的锁文件是install.lock。我们就可以检测install.lock文件是否存在。

<?php
if(file_exists('install.lock')){
   echo '已安装,请不要再次进行安装';
   exit;
}
?>

5、PHP目录处理函数

php 目录处理函数处理文件夹的基本思想如下:
1.读取某个路径的时候判断是否是文件夹
2.是文件夹的话,打开指定文件夹,返回文件目录的资源变量
3.使用readdir读取一次目录中的文件,目录指针向后偏移一次
4.使用readdir读取到最后,没有可读的文件返回false
5.关闭文件目录
代码演示操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//设置打开的目录是D盘
$dir = "d:/";
//判断是否是文件夹,是文件夹
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
//读取到最后返回false,停止循环
while (($file = readdir($dh)) !== false) {
echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "<br />";
}
closedir($dh);
}
}
?>

6、php 文件权限设置
chmod主要是修改文件的的权限

<?php
//修改linux系统/var/wwwroot/某文件权限为755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx"); 
chmod("/somedir/somefile", 0755); 
?>

7、php文件路径函数

我们经常会遇到处理文件路径的情况。例如:
1.文件后缀需要取出来
2.路径需要取出名字不取目录
3.只需要取出路径名中的目录路径
4.或者把网址中的各个部份进行解析取得独立值
5.甚至是自己组成一个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 />";
?>

8、php实现文件留言本

我们来看一下文件结构:

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');
//如果$string 不为空的时候执行,也就是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>

看了刚刚的展示内容,我们知道文件存储时:
1、段与段之间进行了分割
2、内容与用户之前用一个特殊的符号进行了分割

下面我们来写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');
?>

参考文章:
PHP 教程