【PHP】记 file_get_contents 读取文件内容原格式显示在浏览器和wget下载文件内容

一、需求:

将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的预定义变量以及文本回车换行和浏览器换行回车的区别

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容