函数说明
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
思路:
读取csv文件,每读取一行数据,就插入数据库
示例
文件夹结构
/file.csv //csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库 *** 作)
index.php //php文件
file.csv
singi,20lily,19
daming,23
index.php
/*** 读取csv文件,每读取一行数据,就插入数据库
*/
//获取数据库实例
$dsn = 'mysql:dbname=testhost=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中的三行数据
<?// 打开文件同时,打印每一行 $myFile = file( "100001.txt")//用file()函数读取文本文件的内容。 for($index = 0$index <count($myFile)$index++)
{
print($myFile[$index]." ")//循环输出
}
?>修改如下:
$myFile = file( "100001.txt")//用file()函数读取文本文件的内容。
//设置分页
$page=is_numeric($_REQUEST['page'])?$_REQUEST['page']:1
$page_size=3//每页显示三行
//第一页,显示1-3行,对应的for循环起止条件是0-3
//第二页,显示4-6行,对应的for循环起止条件是3-6
//可以看出for循环的条件分别是首项为0与首项为3,公差为3的等差数列,以下分别是公式
$off=3*($page-1)
$off_size=3*$page
$total_page=ceil(count($myFile)/$page_size)//总页数 /
/ 打开文件同时,打印每一行
for($index = $off$index <$off_size$index++)
{
echo iconv('gb2312','utf-8',$myFile[$index])."<br>"//循环输出
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)