PHP 中的fgets() 函数可以实现
毕节网站建设公司创新互联建站,毕节网站设计制作,有大型网站制作公司丰富经验。已为毕节1000多家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的毕节做网站的公司定做!
fgets() 函数从文件指针中读取一行。
fgets(file,length)
参数说明
file 必需。规定要读取的文件。
length 可选。规定要读取的字节数。默认是 1024 字节。
详细说明
从 file 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(要看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。
若失败,则返回 false。
注释:length 参数从 PHP 4.2.0 起成为可选项,如果忽略,则行的长度被假定为 1024 字节。从 PHP 4.3 开始,忽略掉 length 将继续从流中读取数据直到行结束。如果文件中的大多数行都大于 8 KB,则在脚本中指定最大行的长度在利用资源上更为有效。
从 PHP 4.3 开始本函数可以安全用于二进制文件。早期的版本则不行。
如果碰到 PHP 在读取文件时不能识别 Macintosh 文件的行结束符,可以激活 auto_detect_line_endings 运行时配置选项。
例如:
test.txt 文本内容如下:
Hello, this is a test file.
There are three lines here.
This is the last line.
?php
//读取一行
$file = fopen("test.txt","r");
echo fgets($file);
fclose($file);
?
输出:
Hello, this is a test file.
?php
//循环读取每一行
$file = fopen("test.txt","r");
while(! feof($file)) {
echo $str = fgets($file). "br /";
//这里可以逐行的写入数据库中
//mysql_query("insert into table(id,contents) values(NULL,'".$str."')");
}
fclose($file);
?
输出:
Hello, this is a test file.
There are three lines here.
This is the last line.
PHP 版本 = 5.2 的常用连接方法为
$link = mysql_connect('mysql地址/localhost','root','root密码');
mysql_select_db('db1'); //选择一个数据库
mysql_query('set names utf8'); // 设置下数据库默认编码,避免写入/读取乱码
$res = mysql_query('select * from user'); // 执行sql 语句
$rows = array();
while($row = mysql_fetch_array($res)){
$rows[] = $row; // 循环 resouce 数据得到数组数据集合
}
print_r($rows); // 最后一步输出数据列表
PHP 版本 = 5.3 的常用连接方法为PDO形式,当然也可以使用5.2的连接方法。(PDO需开启 php_pdo_mysql 扩展)
$pdo = new PDO('mysql:host=地址/localhost;dbname=数据库名','root','root密码');
$pdo-exec('set names utf8');
$res = $pdo-query('select * from user');
$rows = array();
while($row = $res-fetch()){
$rows[] = $row;
}
print_r($rows);
大家学习php途中,建议使用5.3 版本以上以获得更好的php编程体验。
所以推荐pdo形式连接数据库,更安全快速。
php 读取数据一般都是在循环读取的时候把数据放入数组里,例如
?php
$link = mysql_connect("数据库地址","用户名","密码");//连接服务器
mysql_select_db("数据库名",$link);//连接数据库
mysql_query("set names gb2312");//设置字符集
$str = "select * from table1";//查询语句
$result = mysql_query($str,$link);//执行查询
$re_array = new array();//构造数组
while($row = mysql_fetch_array($result))
{
$re_array[] = $row['列名'];//这样可以保存多列数据,根据语句不同,需要在这进行相应修改
}
?
如果直接使用file_get_contents来读取文件,那么在文件很大的时候会很占内容,比如这个文件有1GB的时候。
这个时候使用传统的文件操作方式就好的多,因为是查找嘛,逐行读取匹配应该也是可以的,下面是我的一个建议,不知道是否满足你的要求,可以看下:
//
需要查找的内容
$search
=
'bcd';
//
打开文件
$res
=
fopen('a.txt',
'r');
while
($line
=
fgets($res,
1024))
{
//
根据规则查找
if
(strpos($line,
$search)
===
0)
{
//
根据既定规则取得需要的数据
echo
substr($line,
4,
-1);
//
这里就是你想得到的
break;
}
}
//
关闭文件
fclose($res);
?php
$txt=file('aaa.txt');
echo $txt[0];
echo $txt[1];//读取第2行内容。因为数组的默认键值是0开始的
mysql_connect('127.0.0.1','root','123456');
$sql="insert into text.tab (a,b) values('$txt[0]', '$txt[1]')";
if (mysql_query($sql)) echo '插入数据库成功';
else '插入数据库失败,SQL语句:$sqlbr错误:".mysql_error();
mysql_close();
?
后面几行是我添加的内容,数据库所在服务器127.0.0.1、用户名root、密码123456、数据库test、表tab,你可能需要修改这些内容。