介绍几种php获取文件内容的方式

介绍读取文件的方式之前,我们先看一下打开文件资源和关闭资源

名字资源绑定到一个流 - fopen

关闭一个已打开的文件指针 - fclose

$handle1 = fopen("/home/rasmus/file.txt", "r");

fclose($hanle1);

$handle2 = fopen("/home/rasmus/file.gif", "wb");

fclose($handle2);

$handle3 = fopen("http://www.example.com/", "r");

fclose($handle3);

$handle4 = fopen("ftp://user:password@example.com/somefile.txt", "w");

fclose($handle4);

?>

string fread ( resource $handle , int $length )

fread() 从文件指针 handle 读取最多 length 个字节。 该函数在遇上以下几种情况时停止读取文件:

读取了 length 个字节

到达了文件末尾(EOF)

(对于网络流)一个包变为可用或者接口超时

如果流被读缓冲并且它不表示普通文件,则最多读取一个等于块大小(通常为8192)的字节数; 取决于先前缓冲的数据,返回数据的大小可能大于块大小。

先查看一下phpinfo.php文件的内容

> cat phpinfo.php

echo phpinfo();

获取方式一

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

$handle = fopen($file, "r");

//一次性输出文件的内容

echo fread($handle, filesize($file)) . PHP_EOL;

fclose($handle);

获取方式二

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

//按照一定的大小循环输出内容

while (!feof($handle)) { //判断是否到文件结束

echo fread($handle, 1024) .PHP_EOL; //每次输出1024字节

}

fclose($handle);

输出结果都是:

echo phpinfo();

文件内容:

55,66

77

8899

009

88

008

每行占用一个数组key

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

//FILE_IGNORE_NEW_LINES 在数组每个元素的末尾不要添加换行符

//FILE_SKIP_EMPTY_LINES 跳过空行

$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

print_r($lines);

输出结果:

//$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

Array

(

[0] => 55,66

[1] => 77

[2] => 8899

[3] => 009

[4] => 88

[5] => 008

)

//$lines = file($file);

Array

(

[0] => 55,66

[1] => 77

[2] => 8899

[3] => 009

[4] => 88

[5] =>

[6] => 008

[7] =>

)

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

$content1 = file_get_contents($file);

var_dump($content1);

$content = file_get_contents($file, null, null, 10, 20);

var_dump($content);

//输出结果$content1

string(35) "55,66

77

8899

009

88

008

"

//输出结果$content

string(20) "

8899

009

88

00"

文件内容:

55,66

77

8899

009

88

22

008

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

$handle = fopen($file, 'r');

if (!$handle) {

echo '文件指针必须是有效的';

}

while (false !== $char = fgetc($handle)) {

echo $char;

}

//输出结果

77

8899

009

88

22

008

给输出结果加上换行,更加清楚的显示:

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

$handle = fopen($file, 'r');

if (!$handle) {

echo '文件指针必须是有效的';

}

while (false !== $char = fgetc($handle)) {

echo $char . PHP_EOL;

}

//输出结果

5

5

,

6

6

7

7

8

8

……

fgets是从文件指针中读取一行,fgetss 只多了一个去除php和html标记的

$dir = dirname(__FILE__);

$file = $dir . '/phpinfo.php';

$handle = fopen($file, 'r');

if (!$handle) {

echo '文件指针必须是有效的';

}

while (!feof($handle)) {

echo fgetss($handle, 1024);

}

fclose($handle);

//输出结果

55,66

77

8899

009

88

22

008

php文件读取文件内容,PHP文件系统函数-读取文件内容几种方式相关推荐

  1. R语言使用fs包的file_info函数查看文件元信息(属性信息)、使用file_chmod函数修改文件的权限、使用file_chown函数修改文件的所有者

    R语言使用fs包的file_info函数查看文件元信息(属性信息).使用file_chmod函数修改文件的权限.使用file_chown函数修改文件的所有者 目录

  2. DLL中导出函数的声明有两种方式

    本文引用自:VC编程时DLL中导出函数的声明有两种方式 一种方式是:在函数声明中加上__declspec(dllexport): 另外一种方式是:采用模块定义(.def)文件声明,(.def)文件为链 ...

  3. asp.net中读取数据库中的数据可以使用DataReader和DataSet 2种方式(初学者望大家不要笑我)...

    在asp.net中,读取数据库中的数据可以使用DataReader和DataSet 2种方式, 两者的差异如下:     使用Dataset对象读取数据大致需要以下5个步骤:     (1)建立数据库 ...

  4. php 多参数函数,php自定义函数的参数在函数间传递的三种方式详解

    在调用函数时,需要向函数传递参数,被传入的参数成为实参,而函数定义时的参数为形参.上一章节我们对php自定义函数的参数进行了实例讲解,本章节就重点介绍一下函数间参数传递的3种方式:按照值传递,按引用传 ...

  5. 向函数传递结构的三种方式

    向函数传递结构的三种方式 零.写在前面 在程序设计的过程当中,我们经常会涉及到选择数据的类型,在很多情况下,单单是普通的变量和数组并不足以满足我们的需求,这时候,C语言为我们提供了一种计较好用的数据类 ...

  6. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  7. hdfs如何查找指定目录是否文件_hadoop实战教程-HDFS文件系统如何查看文件对应的block...

    问题导读: 1.文件与block的信息被保存在什么文件中? 2.如何查看整个目录树? 3.可以通过什么方式查看文件与block的对应关系? (1)文件分割后,会有一个 文件 --> block的 ...

  8. sh执行文件 参数传递_详解shell中脚本参数传递的两种方式

    方式一:$0,$1,$2.. 采用$0,$1,$2..等方式获取脚本命令行传入的参数,值得注意的是,$0获取到的是脚本路径以及脚本名,后面按顺序获取参数,当参数超过10个时(包括10个),需要使用${ ...

  9. c语言向文件中写入字符串_C语言中定义字符串的两种方式及其比较

    先看如下代码: 以上用两种方式定义一个字符串: 1.定义一个char * 类型指针,指向字符串首字符首地址. 2.定义一个数组,数组里存放元素为字符串各个字符+'0',其中'0'为码0值,编译器会自动 ...

最新文章

  1. Datawhale组队学习周报(第040周)
  2. 深度学习在小分子药物研发中的应用
  3. linux存储--共享内存机制mmap(十二)
  4. java结束全部操作代码_Java基本的线程操作(附代码)
  5. Asp.Net在导入外部脚本
  6. 计算两个日期间隔天数(距离(2024-7-7)间隔:1999天)
  7. mysql数据库二进制_Mysql数据库简单安装(二进制)
  8. Activity 生命周期与状态保存
  9. Python3入门机器学习经典算法与应用 第3章 Jupyter Notebook基本用法 学习笔记
  10. 电商后台项目 + 源码
  11. 《FLUENT 14流场分析自学手册》——1.4 流体运动及换热的多维方程组
  12. flashfxp链接不上,flashfxp链接不上是因为什么
  13. 关于IE插件开发(一)——COM组件开发加法
  14. Servlet 容器
  15. CODO是一款为用户提供企业多混合云、自动化运维、完全开源的云管理平台
  16. 史玉柱加持,Playtika上市能否圆昔日“巨人”翻身梦?
  17. AJAX框架眼镜穿搭夏天,夏日太阳镜别乱戴,时髦型男必备这几款太阳镜,防晒帅气兼具...
  18. lettuce连接池真有必要吗?
  19. 软考高项 : (27)信息系统项目管理师模拟试题
  20. RabbitMQ 开发时指定消息消费者的方式

热门文章

  1. 官网安装Nvidia CUDA Toolkit、cuDNN报错502的备用镜像下载网址
  2. linux下实现定时器,在Linux操作系统下实现定时器简介
  3. matlab去除图片水印_(水印去除技巧)3个在线图片水印去除网站,值得收藏
  4. c语言选择结构程序设计笔记,C语言选择结构程序设计.ppt
  5. java filter教程_Java Web Filter 过滤器学习教程(推荐)
  6. 宝塔php漏洞,[安全预警]关于最近宝塔闹得很厉害的PMA漏洞BUG
  7. TIM怎么更新版本 TIM检查更新版本教程
  8. windows7怎么清空电脑只剩系统
  9. 为什么腾讯视频下载不了_腾讯视频如何设置背景
  10. SAP ABAP打印MM采购发票打印开发