关于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>]的形式返回,源代 ...
随机推荐
- .NET平台的ORM分析工具
众所周知,“ORM”和“性能问题”常常一起出现.ORM通过对开发人员隐藏SQL细节可以大大的提高生产力.然而,它们很容易产生一些未被发现的荒谬查询.通常情况下,数据库管理员可以通过交叉引用有问题的存储 ...
- 【MySQL故障处理】 Seconds_Behind_Master= NULL Error_code: 1197
版本:mysql 5.6.32**错误描述:**```Error_code: 1197Last_Error: Worker 3 failed executing transaction '352aa3 ...
- Eclipse安装反编译工具JadClipse for Eclipse手把手教程
今天闲来无事准备弄弄eclipse的反编译工具JadClipse for Eclipse,百度经验里也说的比较清楚只是两个文件下载地址没有明确 net.sf.jadclipse_3.3.0.jar ...
- pug模板引擎(原jade)
前面的话 为什么要引入pug,pug有什么特别之处呢?有一些嵌套层次较深的页面,可能会出现巢状嵌套,如下图所示 在后期维护和修改时,一不小心少了一个尖括号,或者某个标签的开始和闭合没有对应上,就会导致 ...
- TensorFlow conv2d实现卷积
tf.nn.conv2d是TensorFlow里面实现卷积的函数,参考文档对它的介绍并不是很详细,实际上这是搭建卷积神经网络比较核心的一个方法,非常重要 tf.nn.conv2d(input, fil ...
- (转)面试大总结之一:Java搞定面试中的链表题目
面试大总结之一:Java搞定面试中的链表题目 分类: Algorithm Interview2013-11-16 05:53 11628人阅读 评论(40) 收藏 举报 链表是面试中常出现的一类题目, ...
- C语言基础 - 实现动态数组并增加内存管理
用C语言实现一个动态数组,并对外暴露出对数组的增.删.改.查函数 (可以存储任意类型的元素并实现内存管理) 这里我的编译器就是xcode 分析: 模拟存放 一个 People类 有2个属性 字符串类型 ...
- Go语言学习笔记(五)文件操作
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 文件读取 os.File 封装了文件相关操作 type File File代表一个打开的文件对象. func Cr ...
- VMware workstation批量创建虚拟机和自动化安装操作系统(二)
一. 简述 在上一篇<VMware workstation批量创建虚拟机和自动化安装操作系统(一)>中,主要介绍了VMware workstation自定义创建虚拟机的过程,和一些其他的有 ...
- 聊聊synchronized的锁问题
本文不会特别深入细致地讨论synchronized,只是做一个通俗易懂的说明,以及看清一类问题的本质,希望能给大家一点启发. 问题描述 有一个类A,提供了三个方法.分别是静态同步方法,非静态同步方法, ...