关于php文件读取的一些学习记录
初学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文件读取的一些学习记录的更多相关文章
- Python编码/文件读取/多线程
Python编码/文件读取/多线程 个人笔记~~记录才有成长 编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...
- leveldb 学习记录(四)Log文件
前文记录 leveldb 学习记录(一) skiplistleveldb 学习记录(二) Sliceleveldb 学习记录(三) MemTable 与 Immutable Memtablelevel ...
- git 学习记录—— git 中的仓库、文件状态、修改和提交操作等
最近开始学习使用版本控制工具 git .学习方式主要通过阅读 git 网站上的 Pro git 和动手实践,使用的系统为 Ubuntu16.04LTS,以及 Windows 8.1. 本文主要关注 ...
- 深度学习_1_Tensorflow_2_数据_文件读取
tensorflow 数据读取 队列和线程 文件读取, 图片处理 问题:大文件读取,读取速度, 在tensorflow中真正的多线程 子线程读取数据 向队列放数据(如每次100个),主线程学习,不用全 ...
- 风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞
风炫安全web安全学习第三十五节课 文件下载和文件读取漏洞 0x03 任意文件下载漏洞 一些网站由于业务需求,往往需要提供文件下载功能,但若对用户下载的文件不做限制,则恶意用户就能够下载任意敏感文件, ...
- Java学习-019-Properties 文件读取实例源代码
在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可 ...
- Java学习-017-EXCEL 文件读取实例源代码
众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...
- Java学习-016-CSV 文件读取实例源代码
上文(CSV文件写入)讲述了日常自动化测试过程中将测试数据写入 CSV 文件的源码,此文主要讲述如何从 CSV 文件获取测试过程中所需的参数化数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感 ...
- Java学习-013-文本文件读取实例源代码(两种数据返回格式)
此文源码主要为应用 Java 读取文本文件内容实例的源代码.若有不足之处,敬请大神指正,不胜感激! 1.读取的文本文件内容以一维数组[LinkedList<String>]的形式返回,源代 ...
随机推荐
- c++ 命名空间 以及 作用域 函数参数 面向对象实验报告
面向对象的分析与设计 实验报告一 一.变量的储存类别 auto static register extern auto变量 函数中的局部变量,如不专门声明为static存储类别,都是动态地分配存 ...
- WinForm中AssemblyInfo.cs文件参数具体讲解
在.NET中有一个配置文件AssemblyInfo.cs主要用来设定生成的有关程序集的常规信息dll文件的一些参数,下面是默认的AssemblyInfo.cs文件的内容具体介绍 //是否符合公共语言规 ...
- Chromium模块和进程模型
i. Chromium基本模块 Chromium各模块层级图a) Chromium主要包括如下模块: WebKit: Safari和Chromium,以及任何其他基于WebKit内核的浏览器所共享的 ...
- 性能百万/s:腾讯轻量级全局流控方案详解
WeTest 导读 全新的全局流控实现方案,既解决了目前流控的实现难点,同时保证运行稳定且流控准确的前提下,实现更简单,部署成本更低,容灾能力更强. 该方案组件化之后,可以推广到别的有需要的部门使用, ...
- 入职15天,Angular2 小记!
ng 配置@ngModule({ imports: [ BrowserModule ], //导入模块 declarations: [ AppComponent ], //导入组件 providers ...
- 关于华为P9手机的解锁、刷Recovery、获取Root、安装Busybox,以及升级降级的全过程(和一些错误的解决方法)
我有一部华为P9手机,型号EVA-TL00,属于移动定制机.用了半年多了,想给手机添加一些功能,发现有些功能必须Root之后才能用代码实现,所以动了Root的打算. 一.手机解锁.(不解锁则无法对手机 ...
- (转)maven镜像路径配置
很多maven包无法自动下载怎么办?设置maven镜像setting.xml <mirror> <id>repo2</id> <mirrorOf>cen ...
- OP查阅网站
1)http://www.zhdba.com/mysqlops/ 2)
- Dubbo负载均衡策略
在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用. 可以自行扩展负载均衡策略,参见:负载均衡扩展Random LoadBalance 随机,按权重设置随机概率. 在一个截面上 ...
- 【前端,干货】react and redux教程学习实践(二)。
前言 这篇博文接 [前端]react and redux教程学习实践,浅显易懂的实践学习方法. ,上一篇简略的做了一个redux的初级demo,今天深入的学习了一些新的.有用的,可以在生产项目中使用的 ...