亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

PHP文件讀寫(xiě)操作之文件讀取方法詳解

 更新時(shí)間:2011年01月13日 23:35:08   作者:  
在上一篇PHP教程中介紹了如何利用PHP實(shí)現(xiàn)文件讀寫(xiě)操作中的文件寫(xiě)入功能,接下來(lái)和大家分享PHP文件讀取功能的應(yīng)用實(shí)例
PHP文件讀取操作相對(duì)于文件寫(xiě)入操作涉及更多的PHP文件操作函數(shù),在代碼實(shí)例中會(huì)詳細(xì)介紹這些函數(shù)。
  讀取文本文件中存儲(chǔ)數(shù)據(jù)的方式主要涉及的三個(gè)步驟及部分文件操作函數(shù)如下:
  1、打開(kāi)文件(文件操作函數(shù):fopen)
  2、文件數(shù)據(jù)讀取(文件操作函數(shù):fgets、file、readfile、feof等)
  3、關(guān)閉文件(文件操作函數(shù):fclose)

  下面仍然以PHP文件讀寫(xiě)操作代碼實(shí)例講解文件讀取方法的具體應(yīng)用,在實(shí)例中,通過(guò)調(diào)用不同的PHP文件讀取操作函數(shù)讀取文本文件中的數(shù)據(jù),你可以加深PHP文件讀取操作函數(shù)的理解,以便在PHP網(wǎng)站開(kāi)發(fā)中合理應(yīng)用。文本文件中寫(xiě)入的數(shù)據(jù)來(lái)自于PHP文件讀寫(xiě)操作之文件寫(xiě)入教程,fopen函數(shù)中關(guān)于文件讀寫(xiě)模式也可參考此文。
  PHP文件讀取操作代碼實(shí)例
復(fù)制代碼 代碼如下:

<?
$readFun = "fread";
switch ($readFun)
{
case "fgetss":
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
$allowable_tags = "<h1>";
while (!feof($fp)) {
$output = fgetss($fp,100,$allowable_tags);
echo $output;
}
fclose($fp);
break;
case "fgetcsv":
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
while (!feof($fp)) {
$output = fgetcsv($fp,100,"\t");
print_r($output);
}
fclose($fp);
break;
case "readfile":
echo readfile("leapsoulcn.txt");
break;
case "fpassthru":
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
if(!fpassthru($fp))
exit();
fclose($fp);
break;
case "file":
$output = file("leapsoulcn.txt");
print_r($output);
break;
case "fgetc":
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
while (!feof($fp)) {
$str = fgetc($fp);
echo ($str == "\n"?"<br/>":$str);
}
fclose($fp);
break;
case "fread":
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
echo fread($fp,300);
fclose($fp);
break;
default:
@$fp = fopen("leapsoulcn.txt","r") or die("system error");
while (!feof($fp)) {
$output = fgets($fp,100);
echo $output;
}
fclose($fp);
break;
}
?>

注釋?zhuān)涸谏鲜鰧?shí)例中你可以通過(guò)對(duì)$readFun賦值來(lái)實(shí)現(xiàn)不同的PHP文件讀取方法的調(diào)用,涉及的PHP文件讀取操作函數(shù)有fgets、fgetss、fgetcsv、readfile、fpassthru、file、fgetc等函數(shù)。
PHP文件讀取操作函數(shù)fgets、fgetss、fgetcsv之間的區(qū)別
  在代碼實(shí)例中,默認(rèn)PHP文件讀取操作函數(shù)為fgets,fgetss與fgetcsv函數(shù)的功能與fgets一樣,都是一次讀取文件中的一行,直到文件末尾。此處我設(shè)定讀取文本文件中的數(shù)據(jù)長(zhǎng)度為100,即最大讀取長(zhǎng)度為99(100-1),這樣,當(dāng)遇到換行符\n或文件結(jié)束符EOF或從文件中讀取完99個(gè)字節(jié)時(shí)就停止讀取數(shù)據(jù)。fgets函數(shù)返回文件讀取的數(shù)據(jù),字符串型。
  fgetss函數(shù)是fgets函數(shù)的一個(gè)變體,它能夠剝離PHP和HTML標(biāo)記,通過(guò)傳遞第三參數(shù)來(lái)過(guò)濾不必要的數(shù)據(jù),可以提高網(wǎng)站安全性,比如留言本中可以過(guò)濾用戶的輸入數(shù)據(jù),fgetss函數(shù)原型如下:
復(fù)制代碼 代碼如下:

string fgetss(resource fp,int length, string[optional] allowable_tags)

allowable_tags參數(shù)是可選項(xiàng),實(shí)例中我事先在leapsoulcn.txt文件中寫(xiě)入了包含html、body、h1標(biāo)記的一行文字,然后在代碼中我設(shè)定只允許h1標(biāo)記可以出現(xiàn)。
  fgetcsv函數(shù)是fgets的另一個(gè)變體,區(qū)別在與,當(dāng)你的文本文件中寫(xiě)入的數(shù)據(jù)使用了定界符,可以使用fgetcsv將一行分解成多行,返回的結(jié)果存儲(chǔ)在數(shù)組中,函數(shù)原型如下
復(fù)制代碼 代碼如下:

array fgetcsv(resource fp,int length, string[optional] delimiter,string[optional] enclosure)

delimiter是可選項(xiàng),由于在之前寫(xiě)入文件的數(shù)據(jù)中我是用了\t,所以在實(shí)例中文件讀取函數(shù)fgetcsv中的定界符我使用了\t,然后通過(guò)print_r打印出fgetcsv返回的數(shù)組結(jié)構(gòu)。
  三個(gè)PHP文件讀取操作函數(shù)fgets、fgetss、fgetcsv共同之處在于事先都需要使用fopen函數(shù)打開(kāi)讀取的文件,同時(shí)通過(guò)feof函數(shù)判斷是否文件指針到達(dá)文件末尾,切記在讀取操作完成后使用fclose函數(shù)關(guān)閉文件。
  fgetc:讀取單個(gè)字符
  fgetc函數(shù)用來(lái)讀取一個(gè)字符,在代碼實(shí)例中我通過(guò)一個(gè)一個(gè)讀取字符,當(dāng)遇到\n字符時(shí)將其轉(zhuǎn)換成html文件中的br標(biāo)記,以便在游覽器中顯示具體的換行效果,當(dāng)然此函數(shù)的效率肯定是比較低的,不建議使用。
  PHP文件讀取操作函數(shù)readfile、fpassthru、file之間的區(qū)別
  三個(gè)函數(shù)共同之處是一次可以讀取整個(gè)文件,而不是一次讀一行或一個(gè)字符。區(qū)別在于:
  readfile函數(shù)打開(kāi)文件,返回文件內(nèi)容直接輸出在游覽器上,與fopen函數(shù)一樣,函數(shù)返回值為文件的字符總數(shù),readfile函數(shù)的第二個(gè)參數(shù)是可選項(xiàng),指明PHP是否應(yīng)在include_path中查找文件。在代碼實(shí)例中,我使用echo語(yǔ)句不是用來(lái)輸出讀取的文件內(nèi)容,而是輸出讀取的文件字符總數(shù),讀取的文件內(nèi)容readfile函數(shù)已自動(dòng)輸出,這一點(diǎn)必須明確!readfile函數(shù)原型如下:
復(fù)制代碼 代碼如下:

int readfile(string filename,int[optional] use_include_path)

  file函數(shù)是另一種讀取文件的方法,它是把讀取的文件內(nèi)容送到一個(gè)數(shù)組中,每行一個(gè)數(shù)組單元。file函數(shù)原型如下:
復(fù)制代碼 代碼如下:
array file(string filename,bool[optional] use_include_path)

  fpassthru()函數(shù)用來(lái)輸出文件指針處的所有剩余數(shù)據(jù),即如果文件指針并不在開(kāi)頭,它只輸出文件指針后面的數(shù)據(jù)。該函數(shù)將給定的文件指針從當(dāng)前的位置讀取到EOF,并把結(jié)果寫(xiě)到輸出緩沖區(qū),返回值為輸出的字符數(shù)。發(fā)生錯(cuò)誤時(shí),返回FALSE。與readfile()函數(shù)相比,fpassthru()函數(shù)需要首先打開(kāi)文件,數(shù)據(jù)讀取完畢后要關(guān)閉文件。
  fread與file_exists、filesize函數(shù)
  fread函數(shù)也是讀取文件的一種方法,其可以從文件中讀取任意字節(jié),要么滿足length要么讀到文件末尾。read函數(shù)原型如下:
復(fù)制代碼 代碼如下:
string fread(resource fp,int length)

  在用到fread函數(shù)時(shí),當(dāng)你想讀取文件全部數(shù)據(jù),又不知道文件數(shù)據(jù)長(zhǎng)度時(shí),filesize函數(shù)可以解決這個(gè)問(wèn)題,即
復(fù)制代碼 代碼如下:

<?
  @$fp = fopen("leapsoulcn.txt","r") or die("system error");
  echo fread($fp,filesize("leapsoulcn.txt"));
  fclose($fp);
?>

在PHP文件讀寫(xiě)操作教程中我們還沒(méi)有使用過(guò)file_exists函數(shù),通常在PHP網(wǎng)站開(kāi)發(fā)中,出于各種考慮,有時(shí)當(dāng)文件不存在時(shí),我們并不像創(chuàng)建新文件,這時(shí)我們就需要在使用fopen函數(shù)前使用file_exists函數(shù)判斷文件是否存在,即
復(fù)制代碼 代碼如下:

<?
if(file_exists("leapsoulcn.txt"))
{
  //進(jìn)行PHP文件讀寫(xiě)操作
}
?>

以上就是PHP文件讀寫(xiě)操作教程之文件讀取操作的各種方法介紹,通過(guò)合理應(yīng)用PHP文件讀寫(xiě)操作函數(shù),可以實(shí)現(xiàn)簡(jiǎn)單的留言本、網(wǎng)站log記錄等功能。

相關(guān)文章

  • 使用Limit參數(shù)優(yōu)化MySQL查詢的方法

    使用Limit參數(shù)優(yōu)化MySQL查詢的方法

    我們?cè)谧鲆恍┎樵兊臅r(shí)候總希望能避免數(shù)據(jù)庫(kù)引擎做全表掃描,因?yàn)槿頀呙钑r(shí)間長(zhǎng),而且其中大部分掃描對(duì)客戶端而言是沒(méi)有意義的。那么在 MySQL 中有那些方式是可以避免全表掃面的呢?除了我們大家很熟悉的通過(guò)使用索引列或分區(qū)等方式來(lái)進(jìn)行查詢的優(yōu)化之外還有那些呢?
    2008-11-11
  • PHP的數(shù)組中提高元素查找與元素去重的效率的技巧解析

    PHP的數(shù)組中提高元素查找與元素去重的效率的技巧解析

    這篇文章主要介紹了PHP的數(shù)組中提高元素查找與元素去重的效率的技巧解析,文中對(duì)比了相關(guān)方法的執(zhí)行速度來(lái)總結(jié)數(shù)組中使元素查找和去重更加高效的辦法,需要的朋友可以參考下
    2016-03-03
  • 深入解析PHP中SESSION反序列化機(jī)制

    深入解析PHP中SESSION反序列化機(jī)制

    這篇文章主要介紹了PHP中SESSION反序列化機(jī)制的相關(guān)資料,文中介紹的非常相信,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • php數(shù)組索引的Key加引號(hào)和不加引號(hào)的區(qū)別

    php數(shù)組索引的Key加引號(hào)和不加引號(hào)的區(qū)別

    這篇文章主要介紹了php數(shù)組索引的Key加引號(hào)和不加引號(hào)的區(qū)別,加引號(hào)和不加引號(hào)是有嚴(yán)重的區(qū)別的,需要的朋友可以參考下
    2014-08-08
  • php使用pdo連接并查詢sql數(shù)據(jù)庫(kù)的方法

    php使用pdo連接并查詢sql數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了php使用pdo連接并查詢sql數(shù)據(jù)庫(kù)的方法,實(shí)例分析了常用的pdo連接方法與改進(jìn)方法,并針對(duì)pdo技術(shù)進(jìn)行了分析說(shuō)明,需要的朋友可以參考下
    2014-12-12
  • 淺析php插件 HTMLPurifier HTML解析器

    淺析php插件 HTMLPurifier HTML解析器

    本篇文章是對(duì)php插件 HTMLPurifier HTML解析器進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-07-07
  • mayfish 數(shù)據(jù)入庫(kù)驗(yàn)證代碼

    mayfish 數(shù)據(jù)入庫(kù)驗(yàn)證代碼

    mayfish 可以靈活的自定義將要執(zhí)行寫(xiě)入的數(shù)據(jù)內(nèi)容的校驗(yàn)規(guī)則,以減少開(kāi)發(fā)人員手動(dòng)對(duì)每一個(gè)字段的數(shù)據(jù)進(jìn)行校驗(yàn)的麻煩。
    2010-04-04
  • PHP實(shí)現(xiàn)實(shí)時(shí)生成并下載超大數(shù)據(jù)量的EXCEL文件詳解

    PHP實(shí)現(xiàn)實(shí)時(shí)生成并下載超大數(shù)據(jù)量的EXCEL文件詳解

    EXCEL文件的處理是我們?cè)谌粘9ぷ髦薪?jīng)常會(huì)遇到的,這篇文章主要給大家介紹了關(guān)于利用PHP如何實(shí)現(xiàn)實(shí)時(shí)生成并下載超大數(shù)據(jù)量的EXCEL文件,通過(guò)文中介紹的這個(gè)方法對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-10-10
  • php實(shí)現(xiàn)分頁(yè)功能的詳細(xì)實(shí)例方法

    php實(shí)現(xiàn)分頁(yè)功能的詳細(xì)實(shí)例方法

    在本篇文章里小編給大家整理的是關(guān)于php實(shí)現(xiàn)分頁(yè)功能的詳細(xì)實(shí)例方法,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • 比較discuz和ecshop的截取字符串函數(shù)php版

    比較discuz和ecshop的截取字符串函數(shù)php版

    網(wǎng)上看到一篇文章 discuz和ecshop截取字符串的兩個(gè)函數(shù),比較了一下兩個(gè)版本的函數(shù),都各有局限,只能在特定的前提下使用,但是學(xué)習(xí)一下有利于拓寬思路,了解PHP的擴(kuò)展功能
    2012-09-09

最新評(píng)論