初学PHP的时候使用了一些文件读取API,但是没有真正弄清楚各API的区别以及差异,于是找了一篇学习了一下,贴在这里,引用自IBM社区的一篇文章

整体整理测试如下

<?php
/**
* Created by PhpStorm.
* User: f3ngt1ng
* Date: 2017/2/15
* Time: 9:11
*/ //The right way to read files with php
//URL:https://www.ibm.com/developerworks/library/os-php-readfiles/ /**
* feof
* The feof command detects whether you have already read to the end of
* the file and returns True or False. The loop in Listing 1 continues until
* you have reached the end of the file "myfile." Note that feof also returns False
* if you're reading a URL and the socket has timed out because you no longer have
* data to read.
*/
function One(){
$path = '../2.14/filter.txt';
$handler = fopen($path, 'r');
while(!feof($handler)){
/**
*Hearkening back to the "\0" end-of-string terminator in C,
* set the length to one number higher than you actually want.
* Thus, the example above uses 81 when you want 80 characters.
* Get in the habit of remembering to add that extra character
* whenever you use the line limit on this function.
*/
$line = fgets($handler, 3);
echo $line."\r\n";
}
fclose($handler);
} //One();
function Two(){
/* fread($handler, 4096);
* This is where fread comes in.
* The fread function serves a slightly different purpose from fgets:
* It is intended to read from binary files (that is,
* files that don't consist primarily of human-readable text).
* Because the concept of "lines" isn't relevant for binary files
* (logical data constructs are not generally terminated by newlines),
* you must always specify the number of bytes that you wish to read in.
*
* The above reads in 4,096 bytes (4 KB) of data.
* Note that no matter what number you specify,
* fread will not read more than 8,192 bytes (8 KB).
* Assuming that the file is no bigger than 8 KB,
* the code below should read the entire file into a string.
*
*
* If the file is longer than this, you will have to use a loop
* to read the rest in.
*/ } function Three(){
/* fscanf
*list ($field1, $field2, $field3) = fscanf($fh, "%s %s %s");
* example:
* $handle = fopen("users.txt", "r");
* while ($userinfo = fscanf($handle, "%s\t%s\t%s\n")) {
* list ($name, $profession, $countrycode) = $userinfo;
* //... do something with the values
* }
* fclose($handle);
*
* Coming back to string processing,
* fscanf again follows the traditional C file library functions.
* If you're unfamiliar with it, fscanf reads field data into variables
* from a file.
*/
} function Four(){
/*
* fgetss
* The fgetss function breaks away from the traditional file
* functions and gives you a better idea of the power of PHP.
* The function acts like fgets, but strips away any HTML or
* PHP tags it finds, leaving only naked text. Take the HTML file shown below.
*/ } function Five(){
/*
* fpassthru
* No matter how you've been reading your file,
* you can dump the rest of your data to your standard output channel
* using fpassthru.
* Again, this function prints the data,
* so you don't need to grab the data in a variable.
*/
$path = '../2.14/filter.txt';
$handler = fopen($path, 'r');
$line = fgets($handler, 2);
echo $line."==========\r\n";
fpassthru($handler); }
//Five(); function Six(){
//Nonlinear file processing :Jumping Around
/*
* Of course, the above functions only allow you to
* read a file in order. More complex files might require
* you to jump back and forth to different parts of the file.
* This is where fseek comes in handy.
* fseek($handler, 0)
*
* From PHP V4.0 on, you have a few other options.
* For example, if you want to jump ahead 100 bytes from your
* current position, you can try:
*
* fseek($fh, 100, SEEK_CUR);
* Similarly, you can jump back 100 bytes by using:
* fseek($fh, -100, SEEK_CUR);
* If you want to jump back 100 bytes before the end of
* the file, use SEEK_END, instead.
*
* fseek($fh, -100, SEEK_END);
*
* After you've reached the new position, you can use fgets,
* fscanf, or anything else to read the data.
* Note: You can't use fseek on file handles referring to URLs.
*/ } function Seven(){
/*
* Now we get to some of PHP's more unique file-processing strengths:
* dealing with massive chunks of data in a line or two. For example,
* how might you grab a file and display the entire contents on your Web page?
* Well, you saw an example using a loop with fgets. But how can you make
* this more straightforward? The process is almost ridiculously easy with
* fgetcontents, which places an entire file within a string.
* echo file_get_contents("myfilename");
* This article is primarily about dealing with local files,
* but it's worth noting that you can grab, echo, and parse other Web pages
* with these functions, as well.
*
* echo file_get_contents("http://127.0.0.1/");
* This command is effectively the same as:
* $fh = fopen("http://127.0.0.1/", "r");
* fpassthru($fh);
*
* readfile("http://127.0.0.1/");
* The readfile function dumps the entire contents of a file or Web page
* to the default output buffer. By default, this command prints an error message
* if it fails. To avoid this behavior (if you want to), try:
* @readfile("http://127.0.0.1/");
*/ } function Eight(){
/*
* Of course, if you actually want to parse your files,
* the single string that file_get_contents returns might be a bit overwhelming.
* Your first inclination might be to break it up a little bit with the split()
* function.
* $array = split("\n", file_get_contents("myfile"));
*
* But why go through all that trouble when there's a perfectly
* good function to do it for you? PHP's file() function does this in one step:
* It returns an array of strings broken up by lines.
*
* $array = file("myfile");
* It should be noted that there is a slight difference between the above two
* examples. While the split command drops the newlines, the newlines are
* still attached to the strings in the array when using the file command
* (as with the fgets command).
*/
} function Nine(){
/*
* PHP's power goes far beyond this, though.
* You can parse entire PHP-style .ini files in a single command using
* parse_ini_file. The parse_ini_file command accepts files similar
* to Listing 4.
*
* ; Comment
* [personal information]
* name = "King Arthur"
* quest = To seek the holy grail
* favorite color = Blue * [more stuff]
* Samuel Clemens = Mark Twain
* Caryn Johnson = Whoopi Goldberg
*
* $file_array = parse_ini_file("holy_grail.ini");
* print_r $file_array;
*
* OUTPUT:
* Array
* (
* [name] => King Arthur
* [quest] => To seek the Holy Grail
* [favorite color] => Blue
* [Samuel Clemens] => Mark Twain
* [Caryn Johnson] => Whoopi Goldberg
* )
*
* Of course, you might notice that this command merged the sections.
* This is the default behavior, but you can fix it easily by passing a second
* argument to parse_ini_file: process_sections, which is a Boolean variable.
* Set process_sections to True.
*
* $file_array = parse_ini_file("holy_grail.ini", true);
* print_r $file_array;
*
* Array
* (
* [personal information] => Array
* (
* [name] => King Arthur
* [quest] => To seek the Holy Grail
* [favorite color] => Blue
* )
* [more stuff] => Array
* (
* [Samuel Clemens] => Mark Twain
* [Caryn Johnson] => Whoopi Goldberg
* ) * )
*/ }

关于php文件读取的一些学习记录的更多相关文章

  1. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

  2. leveldb 学习记录(四)Log文件

    前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...

  3. git 学习记录—— git 中的仓库、文件状态、修改和提交操作等

    最近开始学习使用版本控制工具  git .学习方式主要通过阅读 git 网站上的 Pro git 和动手实践,使用的系统为 Ubuntu16.04LTS,以及 Windows 8.1. 本文主要关注 ...

  4. 深度学习_1_Tensorflow_2_数据_文件读取

    tensorflow 数据读取 队列和线程 文件读取, 图片处理 问题:大文件读取,读取速度, 在tensorflow中真正的多线程 子线程读取数据 向队列放数据(如每次100个),主线程学习,不用全 ...

  5. 风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞

    风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞 0x03 任意文件下载漏洞 一些网站由于业务需求,往往需要提供文件下载功能,但若对用户下载的文件不做限制,则恶意用户就能够下载任意敏感文件, ...

  6. Java学习-019-Properties 文件读取实例源代码

    在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可 ...

  7. Java学习-017-EXCEL 文件读取实例源代码

    众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...

  8. Java学习-016-CSV 文件读取实例源代码

    上文(CSV文件写入)讲述了日常自动化测试过程中将测试数据写入 CSV 文件的源码,此文主要讲述如何从 CSV 文件获取测试过程中所需的参数化数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感 ...

  9. Java学习-013-文本文件读取实例源代码(两种数据返回格式)

    此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...

随机推荐

  1. Unity3D 物体移动到指定点

    transform.position=Vector3.MoveTowards(transform.position , Target.position, speed * Time.deltaTime) ...

  2. CJOJ 2022 【一本通】简单的背包问题(搜索)

    CJOJ 2022 [一本通]简单的背包问题(搜索) Description 设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,-wn. 问能否从这n件物品中选择若干件放入 ...

  3. AndroidDemo - FloatWindowDemo

    安卓悬浮窗Demo 在桌面上创建一个小的悬浮窗.点击小悬浮窗后会弹出一个大的窗口.大窗口上有2个按键,分别为返回与关闭.点击大窗口外的部分能返回小窗口. 小窗口可以自由拖动.小窗口上显示的是当前内存使 ...

  4. Java类加载机制、类加载器和反射机制-思维导图

    参考文献: 1. <深入理解JVM虚拟机>

  5. Objective-C 使用核心动画CAAnimation实现动画

    先来看看效果吧 整个核心动画就不多做介绍了,随便一搜就能有很多很详细的解释,主要使用以下四种 CABasicAnimation //经典动画 CAKeyframeAnimation //关键帧动画 C ...

  6. OP查阅网站

    1)http://www.zhdba.com/mysqlops/ 2)

  7. shell 脚本编写 if else then

    if ....; then .... elif ....; then .... else .... fi 大多数情况下,可以使用测试命令来对条件进行测试.比如可以比较字符串.判断文件是否存在及是否可读 ...

  8. 创建自己的代码片段(CodeSnippet)

    前言 工作中经常会写一些重复的代码片段,如自动属性.for循环.Action等等,针对这种情况,VisualStudio已经给我们提供了一个非常方便的功能--代码片段,是我们可以简单的输入几个字母就能 ...

  9. AtCoder Beginner Contest 068

    A - ABCxxx 题意: 给出n,输出“ABCn”就可以了,纯水题. B - Break Number 题意: 给出n,找出从1到n的闭区间内能够被2整除最多次的数. 思路: 直接模拟. 代码: ...

  10. 小程序server-3-搭建WebSocket 服务

    小程序server-3-搭建WebSocket 服务: 1.安装 Node 模块 使用 ws 模块来在服务器上支持 WebSocket 协议,下面使用 NPM 来安装: cd /var/www/wxp ...