首页 > 编程知识 正文

php文件读取方法实例分析,php文件操作

时间:2023-12-27 22:26:02 阅读:323446 作者:YGLY

本文目录一览:

php 使用file_get_contents读取大文件的方法

当我们遇到文本文件体积很大时,比如超过几十M甚至几百M几G的大文件,用记事本或者其它编辑器打开往往不能成功,因为他们都需要把文件内容全部放到内存里面,这时就会发生内存溢出而打开错误,遇到这种情况我们可以使用PHP的文件读取函数file_get_contents()进行分段读取。

函数说明

string

file_get_contents

(

string

$filename

[,

bool

$use_include_path

[,

resource

$context

[,

int

$offset

[,

int

$maxlen

]]]]

)

file()

一样,只除了

file_get_contents()

把文件读入一个字符串。将在参数

offset

所指定的位置开始读取长度为

maxlen

的内容。如果失败,file_get_contents()

将返回

FALSE。

file_get_contents()

函数是用来将文件的内容读入到一个字符串中的首选方法。如果操作系统支持还会使用内存映射技术来增强性能。

应用:

复制代码

代码如下:

$str

=

$content=file_get_contents("2.sql",FALSE,NULL,1024*1024,1024);

echo

$str;

如果针对较小文件只是希望分段读取并以此读完可以使用fread()函数

复制代码

代码如下:

$fp=fopen('2.sql','r');

while

(!feof($fp)){

$str.=fread($fp,

filesize

($filename)/10);//每次读出文件10分之1

//进行处理

}

echo

$str;

php读取文件操作

在file读文件之前,无需使用fopen打开。你的加上索引不知道是什么意思,是不是把文件转换为二维数组呀,你试试看下面的代码:

$data = file('date.txt');//读取全部内容;

foreach ($data as $i=$line) $data[$i]=explode(chr(8),$data[$i]);

echo 'pre';

print_r($data);

echo '/pre';

PHP读取zip文件的方法示例

本文实例讲述了PHP读取zip文件的方法。分享给大家供大家参考,具体如下:

?php

$zip

=

zip_open("111.zip");

if

($zip)

{

while

($zip_entry

=

zip_read($zip))

{

echo

"Name:

"

.

zip_entry_name($zip_entry)

.

"n";

echo

"Actual

Filesize:

"

.

zip_entry_filesize($zip_entry)

.

"n";

echo

"Compressed

Size:

"

.

zip_entry_compressedsize($zip_entry)

.

"n";

echo

"Compression

Method:

"

.

zip_entry_compressionmethod($zip_entry)

.

"n";

if

(zip_entry_open($zip,

$zip_entry,

"r"))

{

echo

"File

Contents:n";

$buf

=

zip_entry_read($zip_entry,

zip_entry_filesize($zip_entry));

echo

"$bufn";

zip_entry_close($zip_entry);

}

echo

"n";

}

zip_close($zip);

}

?

运行效果截图如下:

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

php读取文件内容的几种方法详解

?php

$url='';

$html=file_get_contents($url);

//print_r($http_response_header);

ec($html);

printhr();

printarr($http_response_header);

printhr();

?

示例代码2: 用fopen打开url, 以get方式获取内容

复制代码 代码如下: 

?

$fp=fopen($url,'r');

printarr(stream_get_meta_data($fp));

printhr();

while(!feof($fp)){

$result.=fgets($fp,1024);

}

echo"url body:$result";

printhr();

fclose($fp);

?

示例代码3:用file_get_contents函数,以post方式获取url

复制代码 代码如下: 

?php

$data=array('foo'='bar');

$data=http_build_query($data);

$opts=array(

'http'=array(

'method'='POST',

'header'="Content-type: application/x-www-form-urlencodedrn".

"Content-Length: ".strlen($data)."rn",

'content'=$data

),

);

$context=stream_context_create($opts);

$html=file_get_contents('',false,$context);

echo$html;

?

php如何读取CSV大文件并且将其导入数据库示例

思路:

读取csv文件,每读取一行数据,就插入数据库

示例

文件夹结构

/

 file.csv    //csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库操作)

 index.php    //php文件

file.csv

singi,20

lily,19

daming,23

index.php

/**

 * 读取csv文件,每读取一行数据,就插入数据库

 */

//获取数据库实例

$dsn = 'mysql:dbname=test;host=127.0.0.1';

$user = 'root';

$password = '';

try {

    $db = new PDO($dsn, $user, $password);

} catch (PDOException $e) {

    echo 'Connection failed: ' . $e-getMessage();

}

//读取file.csv文件

if (($handle = fopen("file.csv", "r")) !== FALSE) {

    while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {

        //写入数据库

        $sth = $db-prepare('insert into test set name=:name,age=:age');

        $sth-bindParam(':name',$row[0],PDO::PARAM_STR,255);

        $sth-bindParam(':age',$row[1],PDO::PARAM_INT);

        $sth-execute();

    }

    fclose($handle);

}

数据表

CREATE TABLE `test` (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`name` VARCHAR(255) NULL DEFAULT '' COLLATE 'utf8mb4_bin',

`age` INT(10) NULL DEFAULT '0',

PRIMARY KEY (`id`)

)

COLLATE='utf8mb4_bin'

ENGINE=InnoDB;

运行结束后,数据库中会插入csv中的三行数据

php怎样读取excel表格内容?

常用的用PHP读取EXCEL的方法有以下三种,各自有各自的优缺点。个人推荐用第三种方法,因为它可以跨平台使用。

1. 以.csv格式读取

将.xls转换成.csv的文本格式,然后再用PHP分析这个文件,和PHP分析文本没有什么区别。

优点:跨平台,效率比较高、可以读写。

缺点:只能直接使用.csv的文件,如果经常接受.xls二进制文件的话需要手工转换,不能自动化。一个文件只有一个SHEET。

PHP有自带的分析.csv函数:fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )

handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。

length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。

delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。

enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。

fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。

注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误。

当然也可以自己手动分析字符串。

还可以利用fputcsv函数将行格式化为 CSV 并写入文件指针。

2. ODBC链接数据源

优点:支持多种格式,cvs, xls等。支持读写,使用标准SQL语言,和SQLSERVER、MYSQL数据库几乎完全一样。

缺点:值支持windows服务器

3. PHP自定义类

优点:跨平台。某些类支持写操作。支持.xls二进制文件

常用的类有phpExcelReader、PHPExcel。其中后者支持读写,但是需要php5.2以上版本。

phpExcelReader是专门用来读取文件的。返回一个数组,包含表格的所有内容。

该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php。

不过我下载回来的 (版本 2009-03-30),有两点要注意:

reader.php 中的下面这行要修改

将 require_once ‘Spreadsheet/Excel/Reader/OLERead.php’;

改为 require_once ‘oleread.inc’;

example.php 中

修改 $data-setOutputEncoding(’CP1251′);

为 $data-setOutputEncoding(’CP936′);

example2.php 中

修改 nl2br(htmlentities($data-sheets[$sheet]['cells'][$row][$col]));

为 $table_output[$sheet] .= nl2br(htmlspecialchars($data-sheets[$sheet]['cells'][$row][$col]));

不然中文会有问题。

繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。

修改 $data-read(’jxlrwtest.xls’) 为自己的 excel 文件名,zip 档中附的 jxlrwtest.xls 应该是坏了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。