【PHP5函数】
https://segmentfault.com/a/11...
本次要实现与上篇文章中一样效果的案例,即'百度一下'变为'Lin一下'.

但此次使用的是php5的新增函数,较为推荐的:

file_get_contents()    //获取文件或远程地址的全部内容:本质fopen(),fread(),fclose()
file_put_contents()    //把数据存储为文件,但任意类型的数据存储后再次读取,都将是字符串:本质fopen(),fwrite(),fclose()

如上是我拎出来的方法,如下是手册中的详细说明(太详细,有点duo,尽量讲白话。。。)

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

代码实现

<?php
header('content-type:text/html;charset=utf-8');
echo str_replace('百度','Lin',file_get_contents('http://www.baidu.com'));

效果展示

clipboard.png

不想展示,本地存储怎么破?

<?php
    header('content-type:text/html;charset=utf-8');
    $dataStr =   str_replace('百度','Lin',file_get_contents('http://www.baidu.com')); //获取数据,查找替换
    $savePath = './baiduIndex.txt';                                                   //存储路径
    file_put_contents($savePath,$dataStr);                                            //数据存储为文件

效果展示:当前目录下,会生成一个baiduIndex.txt存放查找替换后的http://www.baidu.com首页

【文件遍历】
直接上函数

 /**
 * 读取文件夹下的所有文件
 * @param string $dir   目录名
 */
function readAllFile($dir = ''){
    if(!is_dir($dir)) die('非法的目录');
    echo '<ul>';                                            //html标签在这里是为了目录输出的层次感
    $r = opendir($dir);                                     //文件读写三部曲:打开获得引用->读写->关闭资源
    while(false !== ($file =  readdir($r))){                //必须全等判断,以排除文件名为0,false的情况
        if($file == '.' || $file=='..') continue;           //无意义的输出,干掉
        $file = iconv('gbk','utf-8',$file);                 //本地ansi是gbk的存储(chcp命令可查),输出到浏览器要转为utf-8,才不至乱码
        echo '<li>'.$file.'</li>';
        $file = iconv('utf-8','gbk',$file);                 //判断路径时,要还原编码
        $path = $dir.'/'.$file;
        if(is_dir($path)) readAllFile($path);               //如果子文件是个目录,就递归调用
    }
    echo '</ul>';
    closedir($r);                                           //关闭资源
}
//调用
readAllFile('./php/fileTest');

效果实现

clipboard.png

【文件下载】
浏览器会尽可能的解析,能解析的就直接输出,不能解析的就会以下载的方式来处理.

header('content-type:text/html;charset=utf-8');    //旨在告诉浏览器,以html方式解析Dom

那么我们可以利用http协议(header函数和响应头),告诉浏览器以怎样的方式来处理返回的数据。
这里,我们以下载为例:

 <?php
    header('content-type:application/octet-stream');                //1.返回:以二进制
    $filename = 'down.php';         
    header("content-disposition:attachment;filename=$filename");    //2.处理:附件形式存储在down.php中
    echo file_get_contents('one.php');                              //3.输出:到浏览器

如何调用

作为一个请求地址,放到a标签,点击即可实现下载。
但如果直接运行呢?

效果实现
google

clipboard.png

firefox

clipboard.png


Lin945
211 声望6 粉丝

技术沉淀还是很有必要的,尽量多写写。