包含文件

include和require

在PHP中,可以在服务器执行PHP文件之前插入一个文件的内容

include和require除了处理错误的方式不同之外,在其他方向都是相同的

  • require 生成一个致命错误,错误发生后会停止执行
  • include 生产一个警告,在错误发生后会继续执行

如果希望不影响文件执行,推荐使用include

语法

1
2
3
4
5
include 'filename';

或者

require 'filename';

include和require

如果你有一个名为header.php,想在页面中引用这个页头文件,就可以使用include/require

1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<?php include 'header.php'; ?>
<h1>欢迎来到我的主页!</h1>
<p>一些文本。</p>

</body>
</html>

如果想在所有页面中使用标准菜单文件
menu.php

1
2
3
echo '<a href="/">主页</a>
<a href="/html">HTML 教程</a>
<a href="/php">PHP 教程</a>';

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<div class="leftmenu">
<?php include 'menu.php'; ?>
</div>
<h1>欢迎来到我的主页!</h1>
<p>一些文本。</p>

</body>
</html>

文件

PHP中使用fopen()函数打开文件

打开文件

使用fopen()即可,第一种参数是打开文件的名称,第二个参数规定了使用哪种模式来打开

1
2
3
<?php
$file=fopen("welcome.txt","r");
?>

模式 | 描述
-|-
r | 只读。在文件开头开始
r+ | 读/写。在文件开头开始
w | 只写。打开并清空文件内容;文件不存在则创建文件
w+ | 读/写。打开并清空文件内容;文件不存在则创建文件
a | 追加。打开并向文件末尾进行写操作,如果不存在则创建文件
a+ | 读/追加。通过向文件末尾写内容,来保持文件内容
x | 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误
x+ | 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误

关闭文件

fclose()函数用于关闭打开的文件

1
2
3
4
5
6
<?php
$file = fopen("test.txt","r");

//执行一些代码

fclose($file);

检测文件末尾(EOF)

feof()函数检测是否已到达文件末尾EOF

在循环遍历未知长度的数据时,feof()函数很有用

1
if (feof($file)) echo "文件结尾";

逐行读取文件

fgets()函数用于从文件中逐行读取文件

再调用该函数之后,文件指针会移动到下一行

1
2
3
4
5
6
7
8
<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))
{
echo fgets($file). "<br>";
}
fclose($file);

逐行字符读取文件

fgetc()函数用于从文件中逐字符的读取文件

1
2
3
4
5
6
7
<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))
{
echo fgetc($file);
}
fclose($file);

总结

1.推荐直接使用include包含,如果包含文件出现错误,也不会影响所在文件的正常运行,而require包含则会终止运行

2.文件读取不知道读取文件的行数时,使用feof()函数来参与循环,以实现全部读取

3.fgets()和fgetc()函数用法差不多,前者直接读取完整一行,后者则是一个字一个字的读取

4.fopen中常用的参数就是r r+ w w+ 其他不常用,了解就行