国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

基本的な PHP 開発チュートリアル: PHP ファイルの操作

1. ファイルシステム

1. マウスを右クリックしてファイルを削除し、Ctrl+C (または右クリック) してファイルをコピーして貼り付け、新しいファイルを作成してファイルが正しいかどうかを確認します。読み取り専用ファイル。

2. コンピューターで実行されるこれらの操作をコードで実行できれば素晴らしいでしょう。

3. これらの操作があれば。さまざまなことができます:

  • 設(shè)定ファイルを書いたり変更したりできますか?

  • PHP のインストール中にファイルのアクセス許可を検出することは可能ですか? HTML ファイルやその他のさまざまな操作を生成することは可能ですか?

  • .... 他にも使用できる場所が多すぎます。

  • 4. ファイル処理の學習は、基本的にファイル処理関數(shù)の學習です。以前に作成したコードと組み合わせて、ビジネス処理能力を向上させます。

2. ファイルを読み取ります

1. readfile ファイルを読み取ります

では、ファイルを読み取るにはどうすればよいでしょうか?まずは関數(shù)を?qū)W習しましょう。

int readfile (string $filename)

関數(shù): ファイルパスを渡してファイルを出力します。

以下のコードでは、ファイル名または指定されたファイルパスが渡される限り、ファイルが読み取られます。

<?php
    //linux類的讀了方式
    readfile("/home/paul/test.txt");
    //windows類的讀取方式
    readfile("c:\boot.ini");
?>

注: 上記のコードの Windows スラッシュはスラッシュであり、一部の文字はエスケープされる場合があります。したがって、書くときはスラッシュを 2 つ書きます。

2. file_get_contentsでファイルを開きます

上記は単純にファイルを開いた後の直接出力ですが、ファイルを開いた後に変數(shù)に代入できる操作方法はありますか? PHP は確かにこのメソッドを提供します。このメソッドは、PHP がファイルを開いてコンテンツを返す方法の 1 つです。関數(shù)を見てみましょう:

string file_get_contents ( string filename)

関數(shù): ファイルまたはファイル パスを渡し、開きます。ファイルを取得し、ファイルの內(nèi)容を返します。ファイルの內(nèi)容は文字列です。

<?php
    $filename = 'NoAlike.txt';
    $filestring = file_get_contents($filename);
    echo $filestring;
?>

上記のコードは、ファイルを開き、ファイルの內(nèi)容を出力します。 これまでの知識に基づいてコードを拡張してみましょう。これまでの知識を活用してください。

<?php
    //假設(shè)我們有一個多行的文件叫NoAlike.txt,沒有的話你可以新建一個這個文件
     $filename = 'NoAlike.txt';
    //打開這個文件,將文件內(nèi)容賦值給$filestring
    $filestring = file_get_contents($filename);
    //因為每一行有一個回車即\n,我用\n來把這個字符串切割成數(shù)組
    $filearray = explode("\n", $filestring);
    //把切割成的數(shù)組,下標賦值給$key,值賦值給$val,每次循環(huán)將$key加1。
    while (list($key, $val) = each($filearray)) {
        ++$key;
        $val = trim($val);
        //用的單引號,單引號不解釋變量進行了拼接而已
        print 'Line' . $key .':'.  $val.'<br />';
    }
?>

上記では、これまでに學んだ知識を組み合わせました。

3. fopen、fread、および fclose 操作はファイルを読み取ります

ファイルを開く上記の file_get_contents メソッドは単純かつ粗雑です。以下の

resource fopen ( string $ ファイル名、文字列モード)

  • string fread ( resource $ 操作リソース、int 読み取り長)

  • bool fclose ( resource $ 操作リソース)

  • Through上記の機能に加えて、リソースタイプの通常の操作方法を説明します:

リソースを開く

  • 関連する関數(shù)を使用して操作する

  • リソースを閉じる

fopen 関數(shù) fopen 関數(shù)の機能はファイルを開くことです:

l ファイルを開くためのパス

l ファイルを開くためのモード

戻り値の型は a です。初めて遭遇したリソースタイプ 基本タイプについて説明したときに前述したリソースタイプ。
このリソースタイプでは、このリソースを操作するために他の関數(shù)が必要です。すべてのリソースは、開いたときに閉じる必要があります。

fread関數(shù) この関數(shù)の機能は、開いているファイルリソースを読み取ることです。指定された長さのファイル リソースを読み取り、その一部を読み取り、一部を後方に移動します。ファイルの最後まで。

fclose関數(shù) fclose関數(shù)の機能はリソースを閉じることです。リソースは開いたり閉じたりします。

関數(shù)を理解すると、最後の 2 つの関數(shù)は比較的簡単です。 fopen 関數(shù)のモードは何ですか? fopen のモードは次のとおりです。


38.png


次のレッスンでは、r モードのみを?qū)W習します。書くときに他のいくつかのモードについて話しましょう。


3. まずファイルの読み取り方法を知る必要があります。その後、ファイルの書き込みをマスターできるようになります。

1.ファイルを開く

<?php
    //你可以創(chuàng)建一個NoAlike.txt,以只讀模式打開
    $fp = fopen('NoAlike.txt', "r");
 
 
    //var_dump()操作一下$fp看看效果,輸出的是不是只有類型提示的是resource
    var_dump($fp);
?>

2.ファイルを読む

<?php
    $fp = fopen('NoAlike.txt', "r");
 
    //打開一個文件類型后,讀取長度
    $contents = fread($fp, 1024);
?>

3.ファイルを閉じる

<?php
    $fp = fopen($filename, 'r');
    $contents = fread($fp, 1024);
    fclose($fp);
    echo $contents;
?>

その他のメモ:

39.png


使用例:

<?php
$fp = fopen($filename, 'ab');
$contents = fwrite($fp, '可愛的很\n喲');
fclose($fp);
echo $contents;
?>

注:
この実験では、実験の効果を肉眼で確認することはできません。この機能だけは覚えておいてください。

Windows には、n を rn に透過的に変換するためのテキスト変換タグ ('t') が用意されています。
同様に、「b」を使用してバイナリモードを強制し、データが変換されないようにすることもできます。これらのフラグを使用するには、モード引數(shù)の最後の文字として「b」または「t」を使用します。


4. ファイルの內(nèi)容を作成および変更します

1.file_put_contentsファイルを書き込みます

まず、ファイルを書き込む最初の方法を?qū)Wびましょう:

int file_put_contents (string $file path, string $Write data] )

機能: 指定されたファイルに文字列を書き込み、ファイルが存在しない場合はファイルを作成します。返されるのは書き込まれたバイト長です

<?php
    $data = "我是一個兵,來自老百姓";
 
    $numbytes = file_put_contents('binggege.txt', $data);
 
    if($numbytes){
 
        echo '寫入成功,我們讀取看看結(jié)果試試:';
 
        echo file_get_contents('binggege.txt');
 
    }else{
        echo '寫入失敗或者沒有權(quán)限,注意檢查';
    }
?>

ファイルの書き込みは非常に簡単であることがわかりました。この関數(shù)の形式に従い、ファイルを指定して文字列データを書き込みます。

2.fwrite は fopen と連攜して書き込み操作を?qū)g行します

int fwrite (resource $file resource variable, string $writing string [, int length])

注: fwrite のエイリアス関數(shù)は fputs です

最後のクラスでは、読み取り時にのみ使用される r モードを試しました。次に、fopen で fwrite と w を使用して、書き込みモードでファイルを書き込みました。

機能を見てみましょう:

書き込みモードで開き、ファイルポインタをファイルヘッダーにポイントし、ファイルサイズをゼロに切り詰めます。ファイルが存在しない場合は、ファイルの作成が試行されます。

注: 次の実験では、新しい test.txt ファイルを作成し、そこにコンテンツを書き込むことができます。次に、test.txt を削除してみてください。どのようなヒントがあるのか??見てみましょう。

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "w");
    $len = fwrite($fp, '我是一只來自南方的狼,一直在尋找心中的花姑娘');
    fclose($fp);
    print $len .'字節(jié)被寫入了\n";
?>

概要:
1. ファイルが新しいかどうかに関係なく開かれ、書き換えられます
2. 元のファイルの內(nèi)容が上書きされます
3. ファイルが存在しない場合は、ファイルが作成されます

以下を比較してみましょう 2 つのモードの違い:

40.png

実験を通して証明してみましょう:

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "r+");
    $len = fwrite($fp, '我是一只來自南方的狼,一直在尋找心中的花姑娘');
    fclose($fp);
    print $len .'字節(jié)被寫入了\n';
?>

実験中は、r の後の + 記號を削除できます。

実際に、r モードを使用すると、r のみを使用すると、ファイルの保存時にデータを書き込むことができることがわかりました。

3. a モードと w モードの違い

以下の同じコードを a モードに変更しました。

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "a");
    $len = fwrite($fp,'讀大學迷茫了,PHP學院PHP給你希望');
    echo  $len .'字節(jié)被寫入了\n';
?>

Web ページを開いてこのコードを?qū)g行すると、次のことがわかります: 更新するたびに、ファイルに余分な段落が追加されます
大學で迷っているなら、PHP アカデミー PHP が希望を與えてくれます。

概要:

41.png

4.x モードと w モードの違い

このコードをもう一度試して、x モードに変更しましょう:

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "x");
    $len = fwrite($fp,'讀大學迷茫了,PHP學院PHP給你希望');
    echo  $len .'字節(jié)被寫入了\n';
?>

次のことがわかります:

ファイルは存在します時々エラーが報告されることがあります

$filenameを別のファイル名に変更すれば大丈夫です。しかし、再度更新すると、エラーが報告されました。

x+ は拡張された x モードです。読書時にも使えます。




5.一時ファイルを作成します

前に作成したファイルは永続ファイルです。

一時ファイルの作成は、日々のプロジェクト開発にも非常に役立ちます。一時ファイルを作成することのいくつかの利點:

1. 書き込みが完了したら削除します

2. このファイルの削除ステータスを維持する必要はありません

例: ファイル A の內(nèi)容を転送する必要があります。 B に、B のファイルの內(nèi)容を C に転送します。

現(xiàn)実世界と同じように、まず一時的なボトルを使用して B の水を満たし、次に A のデータを B に書き込むことができます。仮ボトルの水をCに加えます。

この関數(shù)を?qū)W習しましょう:

resource tmpfile ( )

関數(shù): 一時ファイルを作成し、リソースの種類を返します。ファイルを閉じると削除されます。

りー



6. ファイルの移動、コピー、削除

1. 名前の変更

bool rename($old name,$new name);

この関數(shù)は bool 値を返し、古い名前を置き換えます新しい名前に変更します。

<?php
    //創(chuàng)建了一個臨時文件
    $handle = tmpfile();
 
    //向里面寫入了數(shù)據(jù)
    $numbytes = fwrite($handle, '寫入臨時文件');
 
    //關(guān)閉臨時文件,文件即被刪除
    fclose($handle);
 
    echo  '向臨時文件中寫入了'.$numbytes . '個字節(jié)';
?>

ディレクトリを開くと、指定したファイルがターゲット パスにコピーされていることがわかります。

2. ファイルのコピー

ファイルのコピーは、元のものを新しいものに複製するクローン技術(shù)と同等です。二人は全く同じに見えます。

bool copy (source file, target file)

機能: 指定されたパスを持つソースファイルをターゲットファイルの場所にコピーします。

実験とコードを通して遊んでみましょう:

<?php
    //舊文件名
    $filename = 'test.txt';
 
    //新文件名
    $filename2 = $filename . '.old';
 
    //復制文件
    rename($filename, $filename2);
?>

概要:
上記の例を見ると、余分なファイルがあることがわかります。

3. ファイルの削除

ファイルの削除とは、指定したパスにあるファイルを削除することですが、この削除は直接削除です。 Windows コンピュータを使用している場合、このファイルはごみ箱にありません。

このファイルが消えていることがわかるだけです。

bool unlink (指定されたパスを持つファイル)

<?php
    //舊文件名
    $filename = 'copy.txt';
 
    //新文件名
    $filename2 = $filename . '_new';
 
    //修改名字。
    copy($filename, $filename2);
?>

7. ファイル屬性検出機能

一部の學生は、ファイル屬性検出をどこで使用するかについて特に興味を持っています。ファイル屬性の検出は、非常に多くの場所で使用できます。

例を挙げてみましょう:

1. ソフトウェアをインストールすると、ファイルが存在する場合は別の場所にジャンプすることがわかります。

2. インストールプロセス中に一部のファイルに書き込み権限がない場合、インストールは許可されません。

非常に有名な國産ソフトウェア discuz を取り上げ、インストール プロセスのスクリーンショットをお見せしましょう:

42.png

上の例は、ファイル検出の典型的な使用例です。

次の一連の関數(shù)を?qū)W習しましょう。それでは、例を通して學びましょう。

bool file_exists ($指定ファイル名またはファイルパス)
関數(shù): ファイルが存在するかどうか。

bool is_readable ($はファイル名またはファイルパスを指定します)
関數(shù): ファイルが読み取り可能かどうか

bool is_writeable ($はファイル名またはファイルパスを指定します)
関數(shù): ファイルが書き込み可能かどうか

bool is_executable ($ファイル名またはファイルパスを指定)
関數(shù): ファイルが実行可能かどうか

bool is_file ($指定ファイル名またはファイルパス)
関數(shù): ファイルであるかどうか

bool is_dir ($ファイル名またはファイルパスを指定)
機能: ディレクトリかどうか

void clearstatcache (void)
機能: ファイルのステータスキャッシュをクリア

上記の機能は一目瞭然です。実験としては、冒頭に挙げた例を書いてみましょう。

最初の例であるファイルロックについて話しましょう。インストールされている場合、インストール ロックが存在する場合は、インストールされたことを示すメッセージが表示されます。そうでない場合は、インストールが続行されます。

インストールインターフェースの URL は install.php、インストールされるロックファイルは install.lock であると仮定します。 install.lock ファイルが存在するかどうかを検出できます。

<?php
    $filename = 'test.txt';
 
    if (unlink($filename)) {
        echo  "刪除文件成功 $filename!\n";
    } else {
        echo "刪除 $filename 失敗!\n";
    }
?>

ファイルのインストール検出実験を行って、ファイルまたはディレクトリに書き込み権限または読み取り権限があるかどうかを確認してみましょう。そうでない場合、インストールは実行できません。

この問題を処理するアイデアは次のとおりです:

1. アクセス許可を検出する必要がある配列のバッチを定義します

2. フォルダーかファイルかを検出できます

3. set variable. set 変數(shù)が一度 false の場合、インストールの次のステップは表示されません

<?php
if(file_exists('install.lock')){
    echo '已安裝,請不要再次進行安裝';
    exit;
}
?>

上記の例を通して、これを?qū)g行しました。特定の PHP ソフトウェアのインストール プロセス中にインストール検出を?qū)g裝します。

これは私たちの上記のアイデアの実現(xiàn)です。


8. ファイルの共通関數(shù)と定數(shù)

1. ファイル操作用の定數(shù)

以下の定數(shù)が最も一般的に使用されます。ファイルディレクトリの區(qū)切り文字である定數(shù)です。

形式を見てみましょう:

43.png

Windowsのパス形式は d:xxxxxx 注: Windows は d:/xxx/xxx をサポートします
Linux のパス形式は /home/xxx/xxx 注: homexxxxxxはlinuxです 違います
なのでエスケープを有効にするなどしてエスケープ文字を併用するとd:xxxxxxと同じになってしまいます。判斷する場合、2 つある場合は 1 つに変換し、/ を置き換えてパスを分割すると、Linux または Windows 上のパスが統(tǒng)一されたままになります。

定數(shù)を使用します:
DIRECTORY_SEPARATOR

現(xiàn)在のファイルのパスを定義する小さな例を書いてみましょう:

FILE は PHP の事前定義された定數(shù)であるため、必要に応じて FILE を変更する方法はありません。また、オペレーティング システムに自動的に適応します。
その場合は、FILE を使用せず、カスタム定數(shù)を使用して、次のように FILE を処理できます:

<?php
 
//可以定義一批文件是否存在
$files = [
    'config.php',
    'img/',
    'uploads/',
];
 
//定義標志位變量
$flag = true;
foreach($files as  $v){
    echo $v;
 
    //判斷是文件還是文件夾
 
    if(is_file($v)){
        echo '是一個文件    ';
    }else if(is_dir($v)){
        echo '是一個文件夾    ';
    }
 
    if(is_readable($v)){
        echo ' 可讀';
    }else{
         echo '<font color="red">不可讀</font>';
    }
 
    if(is_writeable($v)){
        echo '可寫';
    }else{
        echo '<font color="red">不可寫</font>';
    }
 
    echo '<br />';
}
 
if($flag){
    echo '<a href="step1">下一步</a>';
 
}else{
     echo '不能進行安裝';
}
?>

2. ファイルポインタ操作関數(shù)

rewind (リソースハンドル)

関數(shù): ポインタリターンの始まり

fseek (リソースハンドル, int offset [, int from_where])
関數(shù): ファイルポインタを指定された文字だけ後方に移動します

前回の読み込みでは、fread が指定された長さのデータを読み込むことが分かりました。指定した長さの內(nèi)容を次回読むときは元の位置から読み戻します。

44.png

上の図に示すように、次のことが想像できます:

1. ファイルが最初に開かれると、赤いアイコンが読み込まれます

2. ファイルは疑似カラーで A から C まで読み込まれます

3。デモでは、次のファイルのバッチを書き込みます:

  • Abcdeefghijklk

  • Uvwxyz

実験を始めましょう。

<?php
$_current_file = str_replace(array('/', '\'), DIRECTORY_SEPARATOR, __FILE__);
define('__CUR_FILE__', $_current_file);
echo __CUR_FILE__;
?>

上記の例では、fseek は指定された長さだけバイトを移動することがわかります。そして巻き戻しは毎回ファイルの先頭に戻ります。

それではどうやって最後まで進むか?バイト數(shù)を數(shù)えることができます。 fseek 中に直接後ろに移動します。

次に、ファイルサイズ統(tǒng)計バイトについて話しましょう。

3.filesizeはファイルのサイズを検出します

<?php
$fp = fopen('output.txt', 'r+');
//讀取10個字符
echo fread($fp,10);
 
//指針設(shè)置回到開始處
rewind($handle);
//再讀取10次看看輸出的是什么
echo fread($fp,10);
 
//文件指針向后移動10個字符
echo fseek($fp,10);
 
//再看看文件中輸出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

4.ファイルを操作するためのその他の関數(shù)

実際には、ファイルを操作したり、ファイルを読み込んだりするための関數(shù)が他にもいくつかあります

45.png

説明例 上記の関數(shù)はすべて使用されます。

demo.txt ファイルにファイルのバッチを書き込みます:

abcdeefghijklk

opqrstuvwxyz
12345678

<?php
$filename = 'demo.txt';
echo $filename . '文件大小為: ' . filesize($filename) . ' bytes';
?>
fgets は一度に 1 行ずつ開きます:

<?php
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
//你分發(fā)現(xiàn)每次只讀一個字符
echo  fgetc($fp);
 
//我要全部讀取可以,讀取一次將結(jié)果賦值一次給$string
while($string = fgetc($fp)){
    echo $string;
}
?>

上記のコードでは、すべてのことがわかります。一度に 1 行ずつ開きます。最終的な読み取りの戻り値は false です。

次にファイルインターセプト関數(shù)を見てみましょう:

<?php
//以增加的r模式打開
$fp = fopen('demo.txt','r+');
//你分發(fā)現(xiàn)每次只讀一個字符
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
?>

上の例では、コンテンツがインターセプトされている限り表示できることがわかりました。

5. ファイルの時間関數(shù)

<?php
//打開我們上面的demo.txt文件
$file = fopen("demo.txt", "a+");
//你可以數(shù)數(shù)20個字有多長,看看是不是達到效果了
echo ftruncate($file,20);
fclose($file);
?>
46.png



ファイルロックメカニズムは、通常、開くときにまったく効果がありません。単一のファイル。 。學習のこの部分は少し抽象的です。 それを達成する方法を考えてみませんか? 効果が見えないのはなぜですか?

回答: コンピューターは基本的にミリ秒レベルで非常に高速に動作するためです。したがって、この実験は実際には何の効果もありません。

この章では、ファイル ロックの基本概念を理解し、ファイル ロック機能とロック メカニズムについて理解します。

ファイルロックの使用:


ある人がファイルを書き込んでいる場合、別の人もファイルを開いてファイルを書き込みます。

この場合、一定の確率で衝突が発生した場合、どちらの操作が優(yōu)先されるかはわかりません。

そこで今回はロック機構(gòu)を?qū)毪筏蓼埂?

ユーザー A がこのファイルの書き込みまたは読み取りを行う場合、ファイルを共有に追加します。私はそれを読むことができます、そして他の人も読むことができます。

でも、これをやると。排他ロックを使用します。このファイルは私のものです、私がファイルのロックを解除するまでは觸らないでください。


注: ファイルを追加した後は、ファイルのロックを解除するように注意してください。


この関數(shù)を見てみましょう:

bool flock ( resource $handle , int $operation)

関數(shù): ライトアドバイザリーファイルロック

ロックタイプを見てみましょう:

次に、demo.txtに排他ロックを追加し、書き込み操作を?qū)g行します。

rree

説明:

上記の例では、ファイルに書き込むために、ファイルに排他ロックを追加しました。

操作を完了すると、書き込み完了後に排他ロックが解除されます。

ファイルを読んでいる場合は、同じ処理の考え方に従って共有ロックを追加できます。


10. ディレクトリ処理関數(shù)

以前はファイルだけを処理していましたが、ディレクトリとフォルダーをどのように扱うか

ディレクトリまたはフォルダーの処理に関連する関數(shù)を?qū)Wびましょう。

フォルダー処理の基本的な考え方は次のとおりです:

特定のパスを読み取るときに、それがフォルダーであるかどうかを判斷します

フォルダーの場合は、指定されたフォルダーを開いて、ファイルディレクトリのリソース変數(shù)を返します

readdirを使用してディレクトリを1回読み取ります 中のファイルについては、ディレクトリポインタが1回後方に移動します

readdirを使用して最後まで読み取り、読み取り可能なファイルがない場合はfalseを返します

ファイルディレクトリを閉じます

比較を?qū)Wびましょう共通関數(shù):

48.png

<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
    echo "$filename文件的上次訪問時間是: " . date("Y-m-d H:i:s", fileatime($filename));
    echo "$filename文件的創(chuàng)建時間是: " . date("Y-m-d H:i:s", filectime($filename));
     echo "$filename文件的修改時間是: " . date("Y-m-d H:i:s", filemtime($filename));
}
?>

一度読んで一度戻るので、

<?php
$fp = fopen("demo.txt", "r+");
 // 進行排它型鎖定
if (flock($fp, LOCK_EX)) {
    fwrite($fp, "文件這個時候被我獨占了喲\n");
   // 釋放鎖定
    flock($fp, LOCK_UN);    
} else {
    echo "鎖失敗,可能有人在操作,這個時候不能將文件上鎖";
}
fclose($fp);
?>


11. ファイル権限設(shè)定

ファイル権限設(shè)定関數(shù)はシステムで非常に一般的に使用されます。管理レベルのソフトウェア。たとえば、ゲスト グループ (ゲスト ユーザー) は特定のファイルを表示できません。

エンタープライズ管理では、特定のユーザーまたは特定のユーザー ファイルは読み取りのみが許可され、変更は許可されません。これらは非常に一般的に使用される関數(shù)です。

注:

この章は理解のための章です。これまで Linux を?qū)W習したことがなく、少し難しい場合は、この章を飛ばして、このことについて學習してください。

実際の生産プロセスではあまり役に立ちません。

主に Linux に関する包括的な知識體系を持ち、學習に集中できる學生を?qū)澫螭趣筏皮い蓼埂?

Windows上の一部の機能は実裝できません。

49.png

上記の機能の使い方は、Linuxの権限操作の使い方と同じです。
Linux を?qū)W習した學生にとっては、比較的簡単に學習できます。これまで學んだことがない人にとっては少し難しいかもしれません。

アクセス許可を変更する方法を確認するための例のみを示します:

chmod は主にファイルのアクセス許可を変更します

<?php
//設(shè)置打開的目錄是D盤
$dir = "d:/";
//判斷是否是文件夾,是文件夾
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //讀取一次向后移動一次文件夾指針
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       echo readdir($dh).'<br />';
       //讀取到最后返回false
       //關(guān)閉文件夾資源
        closedir($dh);
    }
}
?>



ファイルパス関數(shù)

。 1 . シナリオの再現(xiàn)

ファイルパスが処理される狀況によく遭遇します。

例:

ファイルのサフィックスを取り出す必要がある

パスはディレクトリではなく名前から取り出す必要がある

パス名のディレクトリパスのみを取り出す必要がある

またはそれぞれ獨立した値を取得するには、URL の一部を解析する必要があります

自分で URL を作成する場合でも
... ...

多くの場所で、パス処理クラス関數(shù)を使用する必要があります。

一般的に使用されるパス処理関數(shù)をすべての人にマークしました。このパス処理関數(shù)を処理するだけです:

50.png

2.Pathinfo

array pathinfo (string $path)関數(shù): Pass ファイルパスを入力します。ファイルのさまざまなコンポーネントを返します

具體的な例を使用してみましょう:

<?php
//設(shè)置打開的目錄是D盤
$dir = "d:/";
 
//判斷是否是文件夾,是文件夾
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //讀取到最后返回false,停止循環(huán)
       while (($file = readdir($dh)) !== false) {
            echo "文件名為: $file : 文件的類型是: " . filetype($dir . $file) . "<br />";
        }
        closedir($dh);
    }
}
?>

結(jié)果は次のとおりです:

ファイルディレクトリ名: d:/www

完全なファイル名: lib.inc.php
ファイル拡張子: php
拡張子なしのファイル名: lib.inc

3.Basename

string Basename (string $path[, string $suffix])関數(shù): パスを渡してファイル名を返します
パラメータは次のとおりですパスを通過しました。
2 番目のパラメータは、ファイル名が指定された文字に達したときに停止することを指定します。

<?php
//修改linux  系統(tǒng)/var/wwwroot/某文件權(quán)限為755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx");
chmod("/somedir/somefile", 0755);
?>

結(jié)論: これを?qū)g行して、ファイルのディレクトリ部分が返されるかどうかを確認できます。

5.parse_url

mixed parse_url (string $path)関數(shù): URLをさまざまな部分に分割します

<?php
$path_parts = pathinfo('d:/www/index.inc.php');
 
echo '文件目錄名:'.$path_parts['dirname']."<br />";
echo '文件全名:'.$path_parts['basename']."<br />";
echo '文件擴展名:'.$path_parts['extension']."<br />";
echo '不包含擴展的文件名:'.$path_parts['filename']."<br />";
?>

結(jié)果は次のとおりです:

array(8) {

["scheme"]= > 文字列(4) "http"
["ホスト"]=> 文字列(8) "ホスト名"
["ポート"]=> ) "ユーザー名"
["パス"]=> 文字列(8) "パスワード"
["パス"]=> 文字列(9) " arg=value"
["fragment"]=> string(6) "anchor"
}


6.http_build_query

string http_build_query (処理対象の混合 $Data)

関數(shù): URL でクエリを生成文字列

<?php 
echo "1: ".basename("d:/www/index.d", ".d").PHP_EOL;
echo "2: ".basename("d:/www/index.php").PHP_EOL;
echo "3: ".basename("d:/www/passwd").PHP_EOL; 
?>
4.Dirname
dirname(string $路徑) 功能:返回文件路徑的文件目錄部份
<?php
dirname(__FILE__);
?>

の結(jié)果は次のとおりです:

username=liwenkai&area=hubei

http_build_url()

機能: URL を生成します


注:

PHP_EOL 定數(shù)

は echo "rn" と同等です。 Windows プラットフォームでは、echo "n" に相當します。 MAC プラットフォームでは、echo "r" に相當します。ファイル処理システムについてはたくさん話しましたが、最も基本的なことさえ書くことができません。

このセクションから始めると、さらに多くのことを書くことができることがわかります。

次に、デモンストレーション効果を見てみましょう:

次のインターフェースにメッセージの內(nèi)容を書き込むためのフォームインターフェース:


メッセージを殘した後の表示インターフェース:


を見てみましょう。ファイル構(gòu)造: index.php --- 入力ボックスとメッセージコンテンツを表示します write.php --- message.txt にデータを書き込みます

message.txt --- チャットコンテンツを保存します

index.php ファイル

<?php
$url = 'http://username:password@hostname:9090/path?arg=value#anchor';
var_dump(parse_url($url));
?>

今表示されたコンテンツを見ると、ファイルが保存されるときに次のことがわかります:

セグメントはセクションに分割されています

コンテンツとユーザーは特殊な記號を使用して分離されています

それでは、write.php コードを書いてみましょうファイルにメッセージを殘すには:

<?php
//定義一個關(guān)聯(lián)數(shù)組
$data = [
        'username'=>'liwenkai',
        'area'=>'hubei'
         ];
//生成query內(nèi)容
echo http_build_query($data);
?>
學び続ける
||
<?php //linux類的讀了方式 readfile("/home/paul/test.txt"); //windows類的讀取方式 readfile("c:\\boot.ini"); ?>