美文网首页
【PHP】记 file_get_contents 读取文件内容原

【PHP】记 file_get_contents 读取文件内容原

作者: drong哥 | 来源:发表于2022-11-19 14:36 被阅读0次

    一、需求:

    将file_get_contents读取到的文件内容通过一个链接访问可以按照文件内容格式展示到浏览器或下载到用户手机或电脑桌面

    二、解决思路:

    首先将读取到的内容放到数组中使用json_encoode转化成json字符串存储到数据库中,然后再用户下载或通过浏览器查看时通过preg_match正则匹配$_SERVER['HTTP_USER_AGENT']来判断用来源,此次用户下载是通过Wget下载如果$_SERVER['HTTP_USER_AGENT']包含Wget则视为下载其他视为浏览器。

    浏览器展示:
    1. 获取用户要查看的内容唯一标识读取到内容需要注意的是换行和回车的识别其中有\r、\n、\r\n
    1. 使用json_decode将json字符串转成数组,使用str_replace\r、\n、\r\n替换成HTML标签 <br />
    1. 替换成功后输出到浏览器。
    下载到用户设备:

    获取用户要查看的内容唯一标识读取到内容,使用json_decode将json字符串转成数组,通过下标直接输出即可,因为数据库中存储的就是原本的文件没有做任何处理。

    二、解决过程:

    
    <?php
    
    //读取内容存入数据库
    
    //file_get_contents获取的内容定义成数据
    
    $str['content'] = '
    
    1qwe
    
      2qqwe
    
      3ww
    
    4qq
    
      5qqasd
    
      6
    
        7asd
    
    ';
    
    //将读取到的内容转成json字符串
    
    $jsonStr = json_encode($str);
    
    //存入数据库todo
    
    ....此处代码省略
    
    //用户访问或下载
    
    //获取要要下载或要查看的数据todo
    
    ....此处代码省略
    
    //获取到的内容转成数组
    
    $str = json_decode($jsonStr,true);
    
    //判断用户来源
    
    if(preg_match( "/Wget/i", $_SERVER["HTTP_USER_AGENT"])){
    
        echo $str;
    
    }else{
    
    $replaceArr = ["\n","\r","\r\n"]; 
    
    $htmlStr = str_replace($replaceArr,'<br />',$str); //显示在浏览器的
    
        echo $htmlStr;
    
    }
    
    

    三、注意事项和结果:

    同一个链接达到将文本内容展示到浏览器和下载到本地的目的,需要注意的是文本内容的换行/回车和浏览器识别的换行和回车是不同的,其实是需要通过$_SERVER里面的HTTP_USER_AGENT

    来判断用户是通过什么方式访问的从而达到目的

    四、感言:

    通过此次案例可以学习和巩固,正则表达式PHP的预定义变量以及文本回车换行和浏览器换行回车的区别

    感谢此次阅读,如有不理解的地方请在下方留言或进行私信,如果对你产生了帮助还请给予点赞收藏、或打赏、以及分享给需要的伙伴谢谢!!!

    相关文章

      网友评论

          本文标题:【PHP】记 file_get_contents 读取文件内容原

          本文链接:https://www.haomeiwen.com/subject/qbubxdtx.html