PHP中读取文件的8种形式和代码实例

2019-12-18 09:35栏目:编程学习

本文实例陈诉了php实现httpRequest的章程。共享给大家供咱们参照他事他说加以考察。具体如下:

重新整建了一下PHP中读取文件的多少个法子,方便现在翻看。

想从学园体育场合的网站上抓取数据管理以往在重返给浏览器,试了广大措施。首先试了http_request(卡塔尔(قطر‎,但是这一个高校pecl_http支持,后来又试了英特网流传甚广的class HttpRequest,恐怕是本身不会选择,也战败了。后来见到了函数httpRequest($url, $post='', $method='GET', $limit=0, $returnHeader=FALSE, $cookie='', $bysocket=FALSE, $ip='', $timeout=15, $block=TRUE卡塔尔,用它成功了,因而贴出来分享一下。函数代码如下:复制代码 代码如下: 8192 ? 8192 : $limit卡塔尔国卡塔尔国; $content .= $data; if { $limit -= strlen; $stop = $limit <= 0; } } } fclose; return $returnHeader ? array : $content; } } ?>

1.fread

调用也非常的粗略的。轻松的例证:复制代码 代码如下:echo httpRequest('');

string fread ( int $handle , int $length )

盼望本文所述对大家的php程序设计具有利于。

fread(卡塔尔 从 handle 指向的文本中读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于互联网流)当二个包可用时,或(在开发客户空间流之后)已读取了 8192 个字节时就可以停下读取文件,视乎先遇上哪一种情景。

fread(卡塔尔(قطر‎ 再次回到所读取的字符串,如若出错再次来到 FALSE。

复制代码 代码如下:

<?php
$filename = "/usr/local/something.txt";
$handle = fopen($filename, "r"卡塔尔(قطر‎;//读取二进制文件时,要求将第叁个参数设置成'rb'

//通过filesize得到文件大小,将一切文件一下子读到一个字符串中
$contents = fread($handle, filesize ($filename));
fclose($handle);
?>

假诺所要读取的文本不是地面平日文书,而是远程文件只怕流文件,就无法用这种方法,因为,filesize不可能获取那么些文件的大小。那时,你需求通过feof(卡塔尔(قطر‎也许fread(卡塔尔(قطر‎的重返值判别是或不是早就读取到了文本的末尾。
  
例如:

复制代码 代码如下:

<?php
$handle = fopen('', 'r');
$content = '';
while(!feof($handle)){
$content .= fread($handle, 8080);
}
echo $content;
fclose($handle);
?>

或者:

复制代码 代码如下:

<?php
$handle = fopen('', 'r');
$content = '';
while(false != ($a = fread($handle, 8080卡塔尔国卡塔尔卡塔尔国{//再次来到false表示早就读取到文件末尾
$content .= $a;
}
echo $content;
fclose($handle);
?>

2.fgets

string fgets ( int $handle [, int $length ] )

fgets(卡塔尔(英语:State of Qatar)从 handle 指向的文书中读取意气风发行并回到长度最多为 length - 1 字节的字符串。遇到换行符(包罗在回到值中)、EOF 也许已经读取了 length - 1 字节后终止(看先遭受那后生可畏种情况)。若无一点名 length,则私下认可为1K,或许说 1024 字节。

复制代码 代码如下:

<?php
$handle = fopen('./file.txt', 'r');
while(!feof($handle)){
echo fgets($handle, 1024);
}
fclose($handle);
?>

Note: length 参数从 PHP 4.2.0 起成为可筛选,假若忽视,则行的尺寸被假定为 1024。从 PHP 4.3 初阶,忽视掉 length 将持续从流中读取数据直到行终止。假如文件中的大好多行都大于 8KB,则在本子中内定最大行的长短在使用财富上进一层有效。从 PHP 4.3 最先本函数可以高枕而卧用于二进制文件。早期的版本则丰盛。

3.fgetss

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

跟fgets功效相同,可是fgetss会尝试从读取的文件中去掉任何 HTML 和 PHP 标识,能够用可选的第3个参数钦命哪些标识不被去掉。

复制代码 代码如下:

<?php
$handle = fopen('./file.txt', 'r');
while(!feof($handle)){
echo fgetss($handle, 1024, '<br>');
}
fclose($handle);
?>

4.file

array file ( string $filename [, int $use_include_path [, resource $context ]] )

将文件内容读入一个数组中,数组的每生机勃勃项对应文件中的意气风发行,满含换行符在内。没有必要行终止符时能够利用 rtrim(卡塔尔 函数过滤换行符。

复制代码 代码如下:

<?php
$a = file('./file.txt');
foreach($a as $line => $content){
echo 'line '.($line 1).':'.$content;
}
?>

5.readfile

int readfile ( string $filename [, bool $use_include_path [, resource $context ]] )

读入一个文件并写入到输出缓冲。再次回到从文件中读入的字节数。假诺出错重返FALSE 并且除非是以 @readfile(卡塔尔(英语:State of Qatar) 方式调用,不然会显示错误音讯。

复制代码 代码如下:

<?php
$size = readfile('./file.txt');
echo $size;
?>

6.file_get_contents

string file_get_contents ( string $filename [, bool $use_include_path [, resource $context [, int $offset [, int $maxlen ]]]] )

将文件读入一个字符串。第一个参数$context能够用来安装有些参数,举个例子访谈远程文件时,设置超时等等。

另外,file_get_contents相对于上述多少个函数,质量要好得多,所以应该先行思虑使用file_get_contents。但是readfile貌似比file_get_contents品质好一些(?),因为它没有必要调用fopen。

复制代码 代码如下:

<?php
$ctx = stream_context_create(array(
'http' => array(
'timeout' => 1 //设置超时
)
)
);
echo file_get_contents("", 0, $ctx);
?>

7.fpassthru

int fpassthru ( resource $handle )

将加以的公文指针从方今的职位读取到 EOF 并把结果写到输出缓冲区。

复制代码 代码如下:

<?php
header("Content-Type:text/html;charset=utf-8");
$handle = fopen('./test2.php', 'r');
fseek($handle, 1024卡塔尔(قطر‎;//将指针定位到1024字节处
fpassthru($handle);
?>

8.parse_ini_file

array parse_ini_file ( string $filename [, bool $process_sections ] )

parse_ini_file(卡塔尔 载入四个由 filename 钦点的 ini 文件,并将里面包车型客车装置作为叁个手拉手数组再次回到。假诺将最终的 process_sections 参数设为 TRUE,将赢得二个多维数组,包罗了布署文件中每意气风发节的称呼和设置。process_sections 的私下认可值是 FALSE。

注意:

  1. 意气风发经 ini 文件中的值富含其余非字母数字的字符,需求将其括在双引号中(")。
  2. 稍加入保障留字不能够充当 ini 文件中的键名,包括:null,yes,no,true 和 false。值为 null,no 和 false 等效于 "",值为 yes 和 true 等效于 "1"。字符 {}|&~![(卡塔尔(英语:State of Qatar)" 也不能够用在键名的别的市方,何况那么些字符在选项值中兼有差别平时的意义。
    test.ini文件内容:

复制代码 代码如下:

; This is a sample configuration file
; Comments start with ';', as in php.ini

[first_section]
one = 1
five = 5
animal = BIRD

[second_section]
path = "/usr/local/bin"
URL = "

test.php内容:

复制代码 代码如下:

<?php
$config = parse_ini_file('./test.ini', ture);
print_r($config);
?>

输出内容:

复制代码 代码如下:

Array
(
[first_section] => Array
(
[one] => 1
[five] => 5
[animal] => BIRD
)

[second_section] => Array
(
[path] => /usr/local/bin
[URL] =>
)

)

多少个注意事项:

  1. 鞭笞在拍卖二进制文件时选用 b 标记,尽管系统并不须要,那样能够使脚本的移植性越来越好。

  2. allow_url_fopen选项激活了 U本田UR-VL 方式的 fopen 封装合同使得能够访谈 U智跑L 对象举例文件。暗中认可的卷入公约提供用 ftp 和 http 合同来拜望远程文件,一些恢弘库举例 zlib 只怕会登记越来越多的包装公约。出于安全性构思,此选项只可以在 php.ini 中安装。

  3. 假定要开垦有特殊字符的 UWranglerL (比方说有空格),就须要采纳 urlencode()举行 U景逸SUVL 编码。

版权声明:本文由威尼斯人app发布于编程学习,转载请注明出处:PHP中读取文件的8种形式和代码实例