PHP粤语件操作,文件读取格局

By admin in 4858.com on 2019年5月5日

1.fread — 读取文件(可安枕无忧用于二进制文件)

php fread函数介绍

整理了1晃PHP中读取文件的几个主意,方便现在翻看。

语法:string fread (
int $handle , int $length
)

string fread ( int handle, int length )

1.fread

  string fread ( int $handle , int $length )

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

  fread() 重返所读取的字符串,要是出错再次回到 FALSE。

4858.com 1

<?php
    $filename = "/usr/local/something.txt";
    $handle = fopen($filename, "r");//读取二进制文件时,需要将第二个参数设置成'rb'

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

4858.com 2

  假若所要读取的文件不是当地普通文书,而是远程文件可能流文件,就不能够用那种艺术,因为,filesize不能够博取那么些文件的轻重缓急。此时,你须求经过feof()恐怕fread()的再次来到值判定是还是不是已经读取到了文本的末梢。

  例如:

4858.com 3

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

4858.com 4

或者:

4858.com 5

<?php
    $handle = fopen('http://www.baidu.com', 'r');
    $content = '';
    while(false != ($a = fread($handle, 8080))){//返回false表示已经读取到文件末尾
        $content .= $a;
    }
    echo $content;
    fclose($handle);
?>

4858.com 6

 

$filename = "aa.txt";
$fp = fopen($filename, "a");
$con = "\r\n你好";
//循环写入
for ($i=0; $i <5; $i++) { 
 //写入
 fwrite($fp, $con);
}

fclose($fp);

fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多
length 个字节数,或达到 EOF
的时候,或(对于互连网流)当一个包可用时,或(在开发用户空间流之后)已读取了
81九二 个字节时就能够停下读取文件。

2.fgets

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

  fgets()从 handle 指向的文件中读取1行并回到长度最多为 length – 壹字节的字符串。蒙受换行符(包含在回来值中)、EOF 或然已经读取了 length –
一 字节后终止(看先碰着那一种境况)。固然没有点名 length,则默以为壹K,也许说 十二肆 字节。

4858.com 7

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

4858.com 8

  Note: length 参数从 PHP 肆.二.0
起成为可选拔,即使忽略,则行的长短被假定为 10贰4。从 PHP 4.三 起头,忽略掉
length 将继续从流中读取数据直到行终止。假诺文件中的大繁多行都大于
捌KB,则在本子中内定最大行的长短在使用财富上尤为实用。从 PHP 4.3开头本函数能够安枕而卧用于二进制文件。早期的本子则万分。

结果:

fread()实例:

3.fgetss

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

  跟fgets功用雷同,可是fgetss会尝试从读取的文件中去掉任何 HTML 和 PHP
标记,可以用可选的第九个参数钦点哪些标志不被去掉。

4858.com 9

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

4858.com 10

 

4858.com 11

<?php
  $file = "data.txt";
  $fh = fopen($file, "rt");
  $userdata = fread($fh, filesize($file));
  fclose($fh);
?>

4.file

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

  将文件内容读入3个数组中,数组的每一项对应文件中的壹行,包蕴换行符在内。无需行终止符时能够使用
rtrim() 函数过滤换行符。

4858.com 12

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

4858.com 13

2.**file_put_contentsPHP粤语件操作,文件读取格局。** — 将三个字符串写入文件

php使用fread供给留意的几点

 5.readfile

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

  读入多个文书并写入到输出缓冲。重临从文件中读入的字节数。若是出错再次回到FALSE 并且除非是以 @readfile() 格局调用,不然会议及展览示错误音讯。

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

 

$con = "\r\n北京";
//file_put_contents和依次调用fopen(),fwrite(),fclose()功能一样,FILE_APPEND->内容追加,相当于a+
file_put_contents($filename,$con,FILE_APPEND);

一、fread读取写入大文件出错的消除办法

6.file_get_contents

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

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

  另外,file_get_contents相对于上述几个函数,性能要好得多,所以应当事先思量选拔file_get_contents。但是readfile貌似比file_get_contents品质好一些(?),因为它没有须求调用fopen。

4858.com 14

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

4858.com 15

结果:

使用fread读取文件时若是超越php.ini中装置的最大内部存款和储蓄器使用值时
会提醒错误,上面包车型大巴格局消除读取大文件的主题素材:

4858.com, 7.fpassthru

   int fpassthru ( resource $handle )

  将加以的文本指针从近年来的义务读取到 EOF 并把结果写到输出缓冲区。

4858.com 16

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

4858.com 17

 

4858.com 18

<? 
  set_time_limit(0);//设置脚本执行时间无限长 
  $flie="flexbuilder_linux_install_a5_112409.bin";//大文件超过php.ini中的内存配置 
  $fp=fopen($flie,"r"); 
  $content=""; 
  $filename="123.bin";//存为新文件 
  $handle=fopen($filename,"a");//写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 
  while(!feof($fp)){//测试文件指针是否到了文件结束的位置 
    $content=fread($fp,1024); 
    fwrite($handle,$content); 
  } 
  fclose($fp); 
  fclose($handle); 
  echo "数据成功写入文件"; 
?>

8.parse_ini_file

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

  parse_ini_file() 载入二个由 filename 钦命的 ini
文件,并将内部的安装作为多个合伙数组再次回到。若是将最终的 process_sections
参数设为
TRUE,将获取3个多维数组,包涵了配备文件中每1节的称谓和安装。process_sections
的暗中认可值是 FALSE。

  注意:

  1. 假如 ini
    文件中的值包括其余非字母数字的字符,供给将其括在双引号中(”)。
  2. 些微保留字不可能当做 ini 文件中的键名,包罗:null,yes,no,true 和
    false。值为 null,no 和 false 等效于 “”,值为 yes 和 true 等效于
    “壹”。字符 {}|&~![()”
    也不可能用在键名的此外省方,而且那几个字符在选项值中负有异乎常常的含义。

test.ini文件内容:

4858.com 19

; 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 = "http://www.example.com/~username

4858.com 20

test.php内容:

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

输出内容:

4858.com 21

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

    [second_section] => Array
        (
            [path] => /usr/local/bin
            [URL] => http://www.example.com/~username
        )

)

4858.com 22

 

 

 

多少个注意事项:

  一. 鼓励在拍卖二进制文件时选拔 b 标识,就算系统并无需,那样能够使脚本的移植性更加好。 

  2. allow_url_fopen选项激活了 U汉兰达L 方式的 fopen 封装协议使得能够访问
U奥迪Q5L 对象举例文件。暗许的包装协议提供用 ftp 和 http
协议来做客远程文件,一些恢宏库比方 zlib
大概会登记更多的包裹协议。出于安全性思虑,此选项只万幸 php.ini 中装置。

  三. 假诺要展开有特殊字符的 ULX570L (举例说有空格),就须求使用
urlencode() 举行 ULacrosseL 编码。

 

 3.fputs():向文件中写一行

二、php fread()是何等识别文件编码的

 

<?php
$handler=fopen('a.txt','rb')//二进制方式打开
$content=fread($handler,1024);
echo $content;
?>
$filename = "aa.txt";
$fp = fopen($filename, 'r');
for ($i=1; $i < 10;$i++) { 
 fputs($fp,'北京\r\n');
}

fread以字符串方式重返,那它是如何分辨a.txt使用的编码情势的吧,工夫确认保证不乱码的啊?

 

PHP7.0之下的本子的文书操作中从未辨别字符编码。

  

只是按字节数据输出,若是和php源码文件和出口的html的字符编码1致就能够准确呈现。

 

 3、fread读取文件接二连三会多多个空字符

$fileSize = filesize($filePath);
$handle = fopen($filePath, "rb"); 
while (!feof($handle)) {
    var_dump(fread($handle, $fileSize));
    //会多输出一次空字符
}

当大家应用方面代码读取文件,有时会多一个空字符。那是因为您是WINDOWS平台,文件是文本张开存款和储蓄的剧情,末尾会有三个出奇字节标志文件截至,你用rb张开自然就足以读到最后特别格外字节了。用r张开,fgets读吧。

透过此文希望能援救到大家,谢谢大家对本站的支撑!

您大概感兴趣的稿子:

  • php遍历、读取文件夹中图纸并分页展现图片的格局
  • PHP读取文件的广阔二种方式
  • thinkPHP+PHPExcel达成读取文件日期的主意(含时分秒)
  • PHP中读取文件的多少个法子计算(推荐)
  • php文件操作小结(删除钦定文件/获取文件夹下的文书名/读取文件夹下图片名)
  • PHP使用fopen与file_get_contents读取文件实例分享
  • PHP读取文件内容的各个办法
  • php从文件夹随机读取文件的章程
  • php读取文件内容到数组的不二等秘书诀
  • PHP中读取文件的八种方法和代码实例
  • PHP按行读取文件时去除换行符的三种情势
  • php读取文件内容的两种艺术详解
  • PHP读取文件并可支持远程文件的代码分享
  • php与c
    达成按行读取文件实例代码

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有