批改状态:未批改
老师批语:
一.文件的读取相关函数
<?php
/**
* 文件操作的基本过程
* 1. 打开文件
* 2. 操作文件:读写追加等
* 3. 关闭文件
*/
// 1.创建或打开一个本地文件
//以r(只读)方式打开文件,不会创建新文件, 类似: r+(读写),指针在开头
// $fh = fopen('file1.txt', 'r') or die("不能打开file1.txt文件");
$fh = fopen('maxim.txt', 'r') or die("不能打开file1.txt文件");
// 以w(只写)方式打开文件,如文件不存在则创建, 类似: w+(读写),指针在开头
$fh = fopen('file2.txt', 'w') or die("不能打开file2.txt文件");
// 以a(追加只写)方式打开文件,如文件不存在则创建, 类似: a+(追加读写),指针在未尾
$fh = fopen('file3.txt', 'a') or die("不能打开file3.txt文件");
// 注: 在windows机器上建议读写模式符添加b,以增强对二进制文件的兼容性,如rb,wb...
// 2.打开一个远程文件
$fh = fopen('http://www.php.cn/course/801.html', 'r');
// 3.读取文件到浏览器
// 从文件指针处读取一行并自动下移
while ($s = fgets($fh)) {
print $s;
}
// fgetss()可过滤掉所有的html标签
while ($s = fgetss($fh)) {
print $s;
}
// 4. 读取文件到字符串:
// file_get_contens($filename)返回字符串
$content = file_get_contents('file.txt');
// 将整个页面读入到一个字符串,这在抓取其它网站内容时很有用,配合过滤正则
$content = file_get_contents('http://www.php.cn');
echo '文件大小: '.strlen($content).' 字节', '<br>';
if (strlen($content) > 0) {
echo $content;
}
//5. 把整个文件读入到数组中,用换行符进行分割
$arr = file('maxim.txt');
foreach ($arr as $key => $value) {
echo '<span style="color:red">格言'.($key+1).': </span>'.$value.'<hr>';
}
// shuffle($arr),随机打乱一个数组,返回true/false
if (shuffle($arr)) {
echo current($arr); //随机显示一条格言
echo $arr[0]; //随机显示一条格言
}
echo '<hr>';
array_rand($arr,$length=1):从数组随机取出一个或多个元素
//取出一个只返回键名,多个则返回随机键名数组
// echo $arr[array_rand($arr)];
print_r(array_rand($arr,3));//返回三个随机的键名
echo '<hr>';
// 遍历这个键名数组,查询出对应的数组元素值
$kes = array_rand($arr,3);
foreach ($kes as $value) { //键名无意义,我们只关心值,即键名
print $arr[$value].'<hr>';
}
//文件读写完成后,应该及时关闭
fclose($fh);
//关闭脚本后,文件也会自动关闭,但还是强烈推荐手工显示式关闭,这是一个好习惯点击 "运行实例" 按钮查看在线实例
二:目录遍历操作:
<?php
/**
* 目录遍历操作:
* 1. 传统过程函数: opendir(),readdir(),closedir()
* 2. 目录扫描器: scandir()
*/
/**
* 第一种方式: 传统目录函数
*
* 第一步: opendir('目录')打开目录,成功返回资源,失败返回false
* 第二步: readdir($dir)读取目录内容,世功返回文件名,失败返回false
* 第三步: closedir($dir)关闭当前目录
*
*/
$dir = opendir('../0827') or die('打开失败');
// $dir = opendir('./') or die('打开失败'); //.或./当前目录
while (false != ($file = readdir($dir))) {
// print $file."<br>";
// print nl2br($file."\n");
if ($file != "." && $file != "..") {
print $file."<br>";
}
}
closedir($dir);
echo '<hr>';
/**
* 第二种方式:将目录内容保存到数组中进行遍历
* 第一步:scandir($dir)将目录转数组中保存
* 第二步:遍历目录数组
*/
//读到一个目录内容到数组中:
$fileArr = scandir('../0827/');
// print_r($fileArr);
foreach ($fileArr as $file) {
if ($file != "." && $file != "..") {
echo "$file<br>";
}
}
//说明: 如果想要递归所有目录,要编写自定义函数来解决,我们介绍一种更方便的递归遍历技术点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号