PHP 中的fgets() 函數(shù)可以實現(xiàn)
畢節(jié)網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,畢節(jié)網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為畢節(jié)1000多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站建設(shè)要多少錢,請找那個售后服務(wù)好的畢節(jié)做網(wǎng)站的公司定做!
fgets() 函數(shù)從文件指針中讀取一行。
fgets(file,length)
參數(shù)說明
file 必需。規(guī)定要讀取的文件。
length 可選。規(guī)定要讀取的字節(jié)數(shù)。默認(rèn)是 1024 字節(jié)。
詳細(xì)說明
從 file 指向的文件中讀取一行并返回長度最多為 length - 1 字節(jié)的字符串。碰到換行符(包括在返回值中)、EOF 或者已經(jīng)讀取了 length - 1 字節(jié)后停止(要看先碰到那一種情況)。如果沒有指定 length,則默認(rèn)為 1K,或者說 1024 字節(jié)。
若失敗,則返回 false。
注釋:length 參數(shù)從 PHP 4.2.0 起成為可選項,如果忽略,則行的長度被假定為 1024 字節(jié)。從 PHP 4.3 開始,忽略掉 length 將繼續(xù)從流中讀取數(shù)據(jù)直到行結(jié)束。如果文件中的大多數(shù)行都大于 8 KB,則在腳本中指定最大行的長度在利用資源上更為有效。
從 PHP 4.3 開始本函數(shù)可以安全用于二進(jìn)制文件。早期的版本則不行。
如果碰到 PHP 在讀取文件時不能識別 Macintosh 文件的行結(jié)束符,可以激活 auto_detect_line_endings 運行時配置選項。
例如:
test.txt 文本內(nèi)容如下:
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
//循環(huán)讀取每一行
$file = fopen("test.txt","r");
while(! feof($file)) {
echo $str = fgets($file). "br /";
//這里可以逐行的寫入數(shù)據(jù)庫中
//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');????//選擇一個數(shù)據(jù)庫
mysql_query('set?names?utf8');????//?設(shè)置下數(shù)據(jù)庫默認(rèn)編碼,避免寫入/讀取亂碼
$res?=?mysql_query('select?*?from?user');????//?執(zhí)行sql?語句
$rows?=?array();
while($row?=?mysql_fetch_array($res)){
$rows[]?=?$row;????//?循環(huán)?resouce?數(shù)據(jù)得到數(shù)組數(shù)據(jù)集合
}
print_r($rows);????//?最后一步輸出數(shù)據(jù)列表
PHP 版本 = 5.3 的常用連接方法為PDO形式,當(dāng)然也可以使用5.2的連接方法。(PDO需開啟 php_pdo_mysql 擴(kuò)展)
$pdo?=?new?PDO('mysql:host=地址/localhost;dbname=數(shù)據(jù)庫名','root','root密碼');
$pdo-exec('set?names?utf8');
$res?=?$pdo-query('select?*?from?user');
$rows?=?array();
while($row?=?$res-fetch()){
$rows[]?=?$row;
}
print_r($rows);
大家學(xué)習(xí)php途中,建議使用5.3 版本以上以獲得更好的php編程體驗。
所以推薦pdo形式連接數(shù)據(jù)庫,更安全快速。
php 讀取數(shù)據(jù)一般都是在循環(huán)讀取的時候把數(shù)據(jù)放入數(shù)組里,例如
?php
$link = mysql_connect("數(shù)據(jù)庫地址","用戶名","密碼");//連接服務(wù)器
mysql_select_db("數(shù)據(jù)庫名",$link);//連接數(shù)據(jù)庫
mysql_query("set names gb2312");//設(shè)置字符集
$str = "select * from table1";//查詢語句
$result = mysql_query($str,$link);//執(zhí)行查詢
$re_array = new array();//構(gòu)造數(shù)組
while($row = mysql_fetch_array($result))
{
$re_array[] = $row['列名'];//這樣可以保存多列數(shù)據(jù),根據(jù)語句不同,需要在這進(jìn)行相應(yīng)修改
}
?
如果直接使用file_get_contents來讀取文件,那么在文件很大的時候會很占內(nèi)容,比如這個文件有1GB的時候。
這個時候使用傳統(tǒng)的文件操作方式就好的多,因為是查找嘛,逐行讀取匹配應(yīng)該也是可以的,下面是我的一個建議,不知道是否滿足你的要求,可以看下:
//
需要查找的內(nèi)容
$search
=
'bcd';
//
打開文件
$res
=
fopen('a.txt',
'r');
while
($line
=
fgets($res,
1024))
{
//
根據(jù)規(guī)則查找
if
(strpos($line,
$search)
===
0)
{
//
根據(jù)既定規(guī)則取得需要的數(shù)據(jù)
echo
substr($line,
4,
-1);
//
這里就是你想得到的
break;
}
}
//
關(guān)閉文件
fclose($res);
?php
$txt=file('aaa.txt');
echo?$txt[0];
echo?$txt[1];//讀取第2行內(nèi)容。因為數(shù)組的默認(rèn)鍵值是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?'插入數(shù)據(jù)庫成功';?
else?'插入數(shù)據(jù)庫失敗,SQL語句:$sqlbr錯誤:".mysql_error();?
mysql_close();??
?
后面幾行是我添加的內(nèi)容,數(shù)據(jù)庫所在服務(wù)器127.0.0.1、用戶名root、密碼123456、數(shù)據(jù)庫test、表tab,你可能需要修改這些內(nèi)容。