基本的な PHP 開発チュート...LOGIN

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

1. ファイルシステム

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

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

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

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

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

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

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

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

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

では、ファイルを読み取るにはどうすればよいでしょうか?まずは関数を学習しましょう。

int readfile (string $filename)

関数: ファイルパスを渡してファイルを出力します。

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

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

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

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

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

string file_get_contents ( string filename)

関数: ファイルまたはファイル パスを渡し、開きます。ファイルを取得し、ファイルの内容を返します。ファイルの内容は文字列です。

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

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

<?php
    //假设我们有一个多行的文件叫NoAlike.txt,没有的话你可以新建一个这个文件
     $filename = 'NoAlike.txt';
    //打开这个文件,将文件内容赋值给$filestring
    $filestring = file_get_contents($filename);
    //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
    $filearray = explode("\n", $filestring);
    //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$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上記の機能に加えて、リソースタイプの通常の操作方法を説明します:

リソースを開く

  • 関連する関数を使用して操作する

  • リソースを閉じる

fopen 関数 fopen 関数の機能はファイルを開くことです:

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

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

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

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

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

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


38.png


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


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

1.ファイルを開く

<?php
    //你可以创建一个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」を使用してバイナリモードを強制し、データが変換されないようにすることもできます。これらのフラグを使用するには、モード引数の最後の文字として「b」または「t」を使用します。


4. ファイルの内容を作成および変更します

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

まず、ファイルを書き込む最初の方法を学びましょう:

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

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

<?php
    $data = "我是一个兵,来自老百姓";
 
    $numbytes = file_put_contents('binggege.txt', $data);
 
    if($numbytes){
 
        echo '写入成功,我们读取看看结果试试:';
 
        echo file_get_contents('binggege.txt');
 
    }else{
        echo '写入失败或者没有权限,注意检查';
    }
?>

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

2.fwrite は fopen と連携して書き込み操作を実行します

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

注: fwrite のエイリアス関数は fputs です

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

機能を見てみましょう:

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

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

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

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

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

40.png

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

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

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

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

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

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

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "a");
    $len = fwrite($fp,'读大学迷茫了,PHP学院PHP给你希望');
    echo  $len .'字节被写入了\n';
?>

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

概要:

41.png

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

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

<?php
    $filename = 'test.txt';
    $fp= fopen($filename, "x");
    $len = fwrite($fp,'读大学迷茫了,PHP学院PHP给你希望');
    echo  $len .'字节被写入了\n';
?>

次のことがわかります:

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

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

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




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

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

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

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

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

例: ファイル A の内容を転送する必要があります。 B に、B のファイルの内容を C に転送します。

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

この関数を学習しましょう:

resource tmpfile ( )

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

りー



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

1. 名前の変更

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

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

<?php
    //创建了一个临时文件
    $handle = tmpfile();
 
    //向里面写入了数据
    $numbytes = fwrite($handle, '写入临时文件');
 
    //关闭临时文件,文件即被删除
    fclose($handle);
 
    echo  '向临时文件中写入了'.$numbytes . '个字节';
?>

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

2. ファイルのコピー

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

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

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

次の一連の関数を学習しましょう。それでは、例を通して学びましょう。

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

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

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

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

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

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 変数が一度 false の場合、インストールの次のステップは表示されません

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

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

これは私たちの上記のアイデアの実現です。


8. ファイルの共通関数と定数

1. ファイル操作用の定数

以下の定数が最も一般的に使用されます。ファイルディレクトリの区切り文字である定数です。

形式を見てみましょう:

43.png

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

定数を使用します:
DIRECTORY_SEPARATOR

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

FILE は PHP の事前定義された定数であるため、必要に応じて FILE を変更する方法はありません。また、オペレーティング システムに自動的に適応します。
その場合は、FILE を使用せず、カスタム定数を使用して、次のように 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. ファイルポインタ操作関数

rewind (リソースハンドル)

関数: ポインタリターンの始まり

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

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

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 は指定された長さだけバイトを移動することがわかります。そして巻き戻しは毎回ファイルの先頭に戻ります。

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

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

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

<?php
$fp = fopen('output.txt', 'r+');
//读取10个字符
echo fread($fp,10);
 
//指针设置回到开始处
rewind($handle);
//再读取10次看看输出的是什么
echo fread($fp,10);
 
//文件指针向后移动10个字符
echo fseek($fp,10);
 
//再看看文件中输出的是什么
echo fread($fp,10);
 
fclose($handle);
?>

4.ファイルを操作するためのその他の関数

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

45.png

説明例 上記の関数はすべて使用されます。

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

abcdeefghijklk

opqrstuvwxyz
12345678

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

<?php
//以增加的r模式打开
$fp = fopen('demo.txt','r+');
//你分发现每次只读一个字符
echo  fgetc($fp);
 
//我要全部读取可以,读取一次将结果赋值一次给$string
while($string = fgetc($fp)){
    echo $string;
}
?>

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

次にファイルインターセプト関数を見てみましょう:

<?php
//以增加的r模式打开
$fp = fopen('demo.txt','r+');
//你分发现每次只读一个字符
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
echo  fgets($fp);
?>

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

5. ファイルの時間関数

<?php
//打开我们上面的demo.txt文件
$file = fopen("demo.txt", "a+");
//你可以数数20个字有多长,看看是不是达到效果了
echo ftruncate($file,20);
fclose($file);
?>
46.png



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

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

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

ファイルロックの使用:


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

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

そこで今回はロック機構を導入します。

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

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


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


この関数を見てみましょう:

bool flock ( resource $handle , int $operation)

関数: ライトアドバイザリーファイルロック

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

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

rree

説明:

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

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

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


10. ディレクトリ処理関数

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

ディレクトリまたはフォルダーの処理に関連する関数を学びましょう。

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

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

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

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

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

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

比較を学びましょう共通関数:

48.png

<?php
$filename = 'demo.txt';
if (file_exists($filename)) {
    echo "$filename文件的上次访问时间是: " . date("Y-m-d H:i:s", fileatime($filename));
    echo "$filename文件的创建时间是: " . 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. ファイル権限設定

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

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

注:

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

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

主に Linux に関する包括的な知識体系を持ち、学習に集中できる学生を対象としています。

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

49.png

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

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

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

<?php
//设置打开的目录是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
       //关闭文件夹资源
        closedir($dh);
    }
}
?>



ファイルパス関数

1 . シナリオの再現

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

例:

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

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

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

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

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

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

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

50.png

2.Pathinfo

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

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

<?php
//设置打开的目录是D盘
$dir = "d:/";
 
//判断是否是文件夹,是文件夹
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
       //读取到最后返回false,停止循环
       while (($file = readdir($dh)) !== false) {
            echo "文件名为: $file : 文件的类型是: " . filetype($dir . $file) . "<br />";
        }
        closedir($dh);
    }
}
?>

結果は次のとおりです:

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

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

3.Basename

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

<?php
//修改linux  系统/var/wwwroot/某文件权限为755
chmod("/var/wwwroot/index.html", 755);  
chmod("/var/wwwroot/index.html", "u+rwx,go+rx");
chmod("/somedir/somefile", 0755);
?>

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

5.parse_url

mixed parse_url (string $path)関数: 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 />";
?>

結果は次のとおりです:

array(8) {

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


6.http_build_query

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

関数: 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__);
?>

の結果は次のとおりです:

username=liwenkai&area=hubei

http_build_url()

機能: URL を生成します


注:

PHP_EOL 定数

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

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

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

次のインターフェースにメッセージの内容を書き込むためのフォームインターフェース:


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


を見てみましょう。ファイル構造: 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
//定义一个关联数组
$data = [
        'username'=>'liwenkai',
        'area'=>'hubei'
         ];
//生成query内容
echo http_build_query($data);
?>
次のセクション
<?php //linux类的读了方式 readfile("/home/paul/test.txt"); //windows类的读取方式 readfile("c:\\boot.ini"); ?>
コースウェア