php 读取文件

我们在上一节当中,我们讲到了可以进行文件操作。而读取文件是一个最最常用的功能。

readfile读取文件

那如何读取一个文件呢?我们先学一个函数。

int readfile ( string $文件名)

功能:传入一个文件路径,输出一个文件。

下面的这一段代码中,只要传入文件名或者指定的文件路径就把文件读取出来了。

<?php
   //linux类的读了方式
   readfile("/home/paul/test.txt");
   //windows类的读取方式
   readfile("c:\\boot.ini");
?>

注意:上面的代码中windows的斜线是\斜线,可能会转义掉一些字符。因此,我们写的时候写上两个斜线。

file_get_contents打开文件

上面的是单纯打文件就直接输出了,有没有打开文件后,能够赋值给一个变量的操作方式呢。

PHP当然会提供这种方式。这个方式就是PHP打开文件并返回内容的方式之一,我们来看看函数:

string file_get_contents ( string filename)

功能:传入一个文件或文件路径,打开这个文件返回文件的内容。文件的内容是一个字符串。

<?php

   $filename = 'NoAlike.txt';

   $filestring = file_get_contents($filename);
   echo $filestring;
?>

上面的代码,就打开了一个文件,并且将文件当中的内容进行了输出。

我们来针对之前的知识把代码进行一下扩展。用一用之前的知识点。

<?php
   //假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件
    $filename = 'NoAlike.txt';


   //打开这个文件,将文件内容赋值给$filestring
   $filestring = file_get_contents($filename);

   //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
   $filearray = explode("\n", $filestring);

   //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。
   while (list($key, $val) = each($filearray)) {
       ++$key;
       $val = trim($val);

       //用的单引号,单引号不解释变量进行了拼接而已
       print 'Line' . $key .':'.  $val.'<br />';
   }
?>

上面,我们就把之前所学的知识进行了组合。

fopen、fread、fclose操作读取文件

上面file_get_contents打开文件的方式简单、粗暴。下面的

resource fopen ( string $文件名, string 模式)

string fread ( resource $操作资源, int 读取长度)

bool fclose ( resource $操作资源 )

通过上面的函数我们来讲解资源类型的通常操作方式:

1.打开资源

2.使用相关函数进行操作

3.关闭资源

fopen函数 fopen函数的功能是打开文件,参数主要有两个:

1.文件打开的路径

2.打开文件的模式

返回类型是一个资源类型,我们第一次遇到了之前基础类型的时候讲到的资源类型。
资源类型需要其他的函数来操作这个资源。所有的资源有打开就要有关闭。

fread函数 函数的功能的功能是读取打开的文件资源。读取指定长度的文件资源,读取一部份向后移动一部份。至到文件结尾。

fclose函数 fclose函数的功能是关闭资源。资源有打开就有关闭。

了解完函数,后两个函数比较简单。而fopen函数的模式到底是什么,fopen的模式有下面几个,我们来讲一下fopen的模式:

模式说明
r只读方式打开,将文件指针指向文件头。
r+读写方式打开,将文件指针指向文件头。
w写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
w+读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
a写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建
a+读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之
x创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建
x+

创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创

接下来,我们只来学习r模式,下结课我们在将写入的时候再来讲讲其他几个模式。

我们先会读取文件了,才能很好的掌握写入文件。

1.打开文件

<?php
   //你可以创建一个NoAlike.txt,以只读模式打开
   $fp = fopen('NoAlike.txt', "r");


   //var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource
   var_dump($fp);
?>

2.读取文件

<?php
   $fp = fopen('NoAlike.txt', "r");

   //打开一个文件类型后,读取长度
   $contents = fread($fp, 1024);
?>

3.关闭文件

<?php
   $fp = fopen($filename, 'r');
   $contents = fread($fp, 1024);
   fclose($fp);
   echo $contents;
?>

其他注意事项:

模式说明
twindows下将\n转为\r\n
b二进制打开模式


说明:

实验无法让肉眼看到这个实验效果。大家记住有这个特点即可。

Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。
与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。


继续学习
||
<?php $fp = fopen('NoAlike.txt', "r"); //打开一个文件类型后,读取长度 $contents = fread($fp, 1024); ?>
提交重置代码
章节
笔记
提问
课件
反馈
捐赠

php入门教程之一周学会PHP

  • 推荐课程
  • 评论
  • 问答
  • 笔记
  • 课件下载
MR.y

MR.y

each 这个函数已经被弃用了,以后就不用费劲去弄什么list+each了. 直接foreach()

4年前    添加回复 1

回复
KyleLou

KyleLou

这个教程怎么没有输出东西

5年前    添加回复 1

YoRHa

$filestring = mb_convert_encoding($filestring,'utf-8','gbk'); 把这段代码加在输出语句前面

YoRHa · 2019-01-06 18:38
回复
旧歌

旧歌

$file = file_get_contents("D:\\Apache\Apache24\htdocs\app.php");echo $file;这一行代码没有任何反应

3年前    添加回复 0

回复
y的小公举

y的小公举

自学的困难只有自己知道,如何让学习不再困难让学习提高效率

4年前    添加回复 0

回复
luoshui

luoshui

用的phpstorm,读取文件乱码。如何解决?UTF-8

4年前    添加回复 0

回复
LIWEN

LIWEN

<?php //创建一个临时文件 $lsfile = tmpfile(); //向里面写入数据 $lsshuju = fwrite($lsfile,'111这里是写入临时文件的数据'); //输出写入情况 echo '向临时文件中写入了' . $lsshuju . '个字符<br>'; //输出临时文件的内容 $shuchu = file_get_contents

5年前    添加回复 0

回复
LIWEN

LIWEN

<?php //创建一个临时文件 $lsfile = tmpfile(); //向里面写入数据 $lsshuju = fwrite($lsfile,'111这里是写入临时文件的数据'); //输出写入情况 echo '向临时文件中写入了' . $lsshuju . '个字符<br>'; //输出临时文件的内容 $shuchu = file_get_co

5年前    添加回复 0

回复

关于trim函数

[最新 益伦 的回答]谢谢额!

时间:4年前

读取新创建的临时文件内容报错的问题

[最新 左手右手慢动作 的回答]报错的是$lsfile这个变量不是有效的路径

时间:5年前

有关于文件路径问题?

[最新 数据分析师 的回答]有关于文件路径问题?-PHP中文网问答-有关于文件路径问题?-PHP中文网问答围观一下哦,学习一下。

时间:5年前

YuShine Wei

YuShine Wei

通过上面的函数我们来讲解资源类型的通常操作方式: 1.打开资源 2.使用相关函数进行操作 3.关闭资源

2年前 0

吒哪

吒哪

1.int readfile ( string $文件名); 2.string file_get_contents ( string filename); 打开文件后,赋值给一个变量。 3.explode("\n", $filestring); 用\n来把这个字符串切割成数组 4.esource fopen ( string $文件名, string 模式); string fread ( resource $操作资源, int 读取长度); bool fclose ( resource $操作资源 ); 5.r 只读方式打开,将文件指针指向文件头。 r+ 读写方式打开,将文件指针指向文件头。 w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建

2年前 0

没有

没有

readfile() 函数输出一个文件。 readfile() 该函数读入一个文件并写入到输出缓冲。 若成功,则返回从文件中读入的字节数。若失败,则返回 false。您可以通过 @readfile() 形式调用该函数,来隐藏错误信息。

3年前 0

fighting&it'sme

fighting&it'sme

模式 说明 t windows下将\n转为\r\n b 二进制打开模式 说明: 实验无法让肉眼看到这个实验效果。大家记住有这个特点即可。 Windows 下提供了一个文本转换标记('t')可以透明地将 \n 转换为 \r\n。 与此对应还可以使用 'b' 来强制使用二进制模式,这样就不会转换数据。要使用这些标记,要么用 'b' 或者用 't' 作为 mode 参数的最后一个字符。

4年前 0

fighting&it'sme

fighting&it'sme

fopen、fread、fclose操作读取文件 上面file_get_contents打开文件的方式简单、粗暴。下面的 resource fopen ( string $文件名, string 模式) string fread ( resource $操作资源, int 读取长度) bool fclose ( resource $操作资源 ) 通过上面的函数我们来讲解资源类型的通常操作方式: 1.打开资源 2.使用相关函数进行操作 3.关闭资源 fopen函数 fopen函数的功能是打开文件,参数主要有两个: 1.文件打开的路径 2.打开文件的模式 返回类型是一个资源类型,我们第一次遇到了之前基础类型的时候讲到的资源类型。 资源类型需要其他的函数来操作这个资源。所有的资源有打开就要有关闭。 fread函数 函数的功能的功能是读取打开的文件资源。读取指定长度的文件资源,读取一部份向后移动一部份。至到文件结尾。 fclose函数 fclose函数的功能是关闭资源。资源有打开就有关闭。 了解完函数,后两个函数比较简单。而fopen函数的模式到底是什么,fopen的模式有下面几个,我们来讲一下fopen的模式: 模式 说明 r 只读方式打开,将文件指针指向文件头。 r+ 读写方式打开,将文件指针指向文件头。 w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建

4年前 0

阿大

阿大

readfile("/home/paul/test.txt"); --- Linux readfile("c:\\boot.ini");---Windows $filestring = file_get_contents($filename); fopen、fread、fclose操作读取文件 r 只读方式打开,将文件指针指向文件头。 r+ 读写方式打开,将文件指针指向文件头。 w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建 a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建 a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 x 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建 x+ 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建

4年前 0

课件暂不提供下载,工作人员正在整理中,后期请多关注该课程~