《PHP編程最快明白》第五講:php目錄、文件操作

字號(hào):


    PHP的目錄、文件操作是很簡(jiǎn)單的,本章用的是windows的服務(wù)器,目錄名為GBK編碼,文件內(nèi)容為UTF-8編碼。這樣一目了然。
    實(shí)例15目錄創(chuàng)建、刪除
    代碼如下:
    <?php
    $dirfile="文件夾";
    $dirfile=iconv("UTF-8","GB2312",$dirfile);//轉(zhuǎn)碼,否則會(huì)看到windows里面是亂碼,但程序能正常操作,讀取目錄時(shí)反過來才看到目錄的真正名字。
    if(!file_exists($dirfile))//用于判斷目錄或文件是否存在
    mkdir($dirfile);//創(chuàng)建目錄
    rmdir($dirfile);//刪除目錄,必須為空目錄,否則要先刪除里面的所有文件,后面有刪除方法
    echo"<br>";
    ?>
    實(shí)例16文件創(chuàng)建、刪除、讀取、轉(zhuǎn)數(shù)組
    代碼如下:
    <?php
    $filename="文件.txt";
    $filename=iconv("UTF-8","GB2312",$filename);//轉(zhuǎn)碼,否則會(huì)看到windows里面是亂碼
    file_put_contents($filename,'');//自動(dòng)創(chuàng)建空文件,如果已存在則刪除再創(chuàng)建,具體可以增加file_exists判斷,比fopen、fputs、fclose等函數(shù)簡(jiǎn)單。
    unlink($filename);//注意文件名都是GB2312編碼
    file_put_contents($filename,"大家好!\r\n大家好??!",FILE_APPEND);
    //看到?jīng)],寫入兩行,第三個(gè)參數(shù)可選,表示是以增加方式寫入,否則清空內(nèi)容再寫入
    echofile_get_contents($filename);//忽略換行讀取整個(gè)文件
    echo"<br>";
    $arr=file($filename);//文件按行讀到數(shù)組里
    print_r($arr);
    echo"<br>";
    readfile($filename);//文件直接輸出到屏幕
    echo"<br>";
    ?>
    實(shí)例17獲取url信息、客戶端ip地址
    代碼如下:
    <?php
    //獲取域名或主機(jī)地址
    echo$_SERVER['HTTP_HOST']."<br>";
    //獲取網(wǎng)頁(yè)地址(中間部分)
    echo$_SERVER['PHP_SELF']."<br>";
    //獲取網(wǎng)址參數(shù)(?后面部分)
    echo$_SERVER["QUERY_STRING"]."<br>";
    //來源客戶端ip地址
    if($_SERVER['HTTP_CLIENT_IP']){
    $onlineip=$_SERVER['HTTP_CLIENT_IP'];
    }elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
    $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }else{
    $onlineip=$_SERVER['REMOTE_ADDR'];
    }
    echo$onlineip;
    echo"<br>";
    ?>
    實(shí)例18獲取文件修改時(shí)間戳、遍歷目錄文件。
    。
    代碼如下:
    <?php
    $filename="文件.txt";
    $filename=iconv("UTF-8","GB2312",$filename);
    $passtime=time()-filectime($filename);//創(chuàng)建時(shí)間差,不準(zhǔn),一般不用
    echo$passtime;
    echo"<br>";
    $passtime=time()-filemtime($filename);//修改時(shí)間差,用于更新判斷,緩沖等判斷
    echo$passtime;
    echo"<br>";
    $dir="../";
    print_r($arr=scandir($dir));//獲得主目錄的所有文件和文件夾名稱
    foreach($arras$value){
    if(!is_dir($dir.$value))//是否目錄,目錄還包括"."、".."兩個(gè)數(shù)組,通過判斷可以知道是文件還是目錄,以及是什么類型的后序名
    echoiconv("GB2312","UTF-8",$value)."<br>\r\n";
    }
    ?>
    實(shí)例19文件包含
    代碼如下:
    <?php
    $filename="文件.txt";
    @include($filename);//包含到此處,然后由服務(wù)器處理成html代碼。
    /*
    @表示讀取不了時(shí)忽略錯(cuò)誤警告,用于PHP語句、函數(shù)前,一般服務(wù)器端顯示錯(cuò)誤是關(guān)閉的,但是個(gè)別例外。除此之外,大家還可以try-catch捕捉異常,或者用file_exists函數(shù)先判斷文件是否存在。
    */
    require_once($filename);//預(yù)處理包含,一般用于配置、函數(shù)等包含進(jìn)來。這兩個(gè)函數(shù)都可以選擇_once,強(qiáng)調(diào)包含一次。
    //這四個(gè)函數(shù)都會(huì)被服務(wù)器處理PHP代碼,簡(jiǎn)化重復(fù)的代碼,很常用。實(shí)例15的readfile則直接當(dāng)html輸出到客戶頁(yè)面
    ?>
    可以看出,PHP操作文件目錄的函數(shù)是比較簡(jiǎn)單和強(qiáng)大的,一個(gè)功能也就一行代碼搞定。本章沒有介紹copy函數(shù),大家可以自己試試。