博客列表 >文件常用操作-2018年-8月-29日

文件常用操作-2018年-8月-29日

Jerry-wang的博客
Jerry-wang的博客原创
2018年08月30日 10:29:04480浏览

一.文件的读取相关函数

实例

<?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>";
     }
}

//说明: 如果想要递归所有目录,要编写自定义函数来解决,我们介绍一种更方便的递归遍历技术

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议