PHPファイルの扱い
PHP には、ファイルの作成、読み取り、アップロード、編集のためのさまざまな関数があります。
注意: ファイルは慎重に扱ってください。
ファイルを操作するときは細心の注意を払う必要があります。間違って行うと、非常に深刻な損害を引き起こす可能性があります。
よくある間違いは次のとおりです:
1. 間違ったファイルを編集する
2. ハードドライブをジャンクデータで埋める
3. ファイルコンテンツを誤って削除する
PHP readfile() 関数
readfile($filename)
機能: ファイルパスを渡してファイルを出力します
たとえば、次の内容を含むfile.txtという名前のファイルがあります
PHP 中国語学習へようこそ
readfile() 関数を使用してこのファイルを読み取り、出力ストリームに書き込みます。PHP コードは次のとおりです (読み取りが成功すると、readfile() 関数はバイト数):
単語 セクション数: 英語の場合は 1 バイト、gbk でエンコードされた中国語の場合は 2、utf-8 中国語の場合は 3、スペースと記号の場合は 1
<?php echo readfile("D:WWW/item/file.txt"); ?>
プログラムの実行結果:
ようこそPHP中国語学習ではPHP39
file_get_contentsでファイルが開きます
上記は単にファイルを開いた直後の出力ですが、開いた後に変数に代入できる操作メソッドはありますか?ファイル?
PHP は確かにこのメソッドを提供します。このメソッドは、PHP がファイルを開いてコンテンツを返す方法の 1 つです。関数を見てみましょう:
file_get_contents (string filename)
関数: ファイルまたはこのファイルを開くためのファイル パスは、ファイルの内容を返します。ファイルの内容は文字列です。
たとえば、次の内容を含む file.txt ファイルがあります:
file_get_contents を使用して open
Use file_get_contents to open
<?php $fileName="file.txt"; $filestring = file_get_contents($fileName); echo $filestring; ?>
プログラムの実行結果:
私は file_get_contents open を使用します
fopen、fread、fclose オペレーションはファイルを読み取ります
fopen ($file name, mode)
fread ($operation resource, read length)
fclose ($Operation Resource)
上記の関数を通じて、リソース タイプの通常の操作方法を説明します:
1. リソースを開きます
2. 関連関数を使用して操作します
3.リソースを閉じます
fopen fopen 関数の機能は、次の 2 つの主なパラメータです:
1 ファイルを開くためのモード
このリソース タイプでは、このリソースを操作するために他の機能が必要です。すべてのリソースは、開いたときに閉じる必要があります。fread関数 この関数の機能は、開いているファイルのリソースを読み取ることです。指定された長さのファイル リソースを読み取り、その一部を読み取り、一部を後方に移動します。ファイルの最後まで。
fclose関数 fclose関数の機能はリソースを閉じることです。リソースは開いたり閉じたりします。
fopen のモード (下の表):
r | 読み取り専用。ファイルの先頭から開始します。 r+ |
w | ただ書くだけ。ファイルを開いて内容をクリアします。ファイルが存在しない場合は、新しいファイルを作成します。 |
w+ | 読み取り/書き込み。ファイルを開いて内容をクリアし、ファイルが存在しない場合は新しいファイルを作成します。 |
を | 追加しました。ファイルを開いて末尾に書き込みます。ファイルが存在しない場合は新しいファイルを作成します。 |
a+ | 読み取り/追加。ファイルの最後に書き込むことで、ファイルの内容を維持します。 |
× | ただ書くだけ。新しいファイルを作成します。ファイルが既に存在する場合は、FALSE とエラーが返されます。 |
x+ | 読み取り/書き込み。新しいファイルを作成します。ファイルが既に存在する場合は、FALSE とエラーが返されます。 |
t | Windowsでnをrnに変換 |
b | バイナリオープンモード |
1. ファイル
file.txtを開きます。ファイルの内容は次のとおりです
どういたしまして
<?php //你可以创建一个file.txt,以只读模式打开 $fp = fopen('file.txt', "r"); //var_dump()操作一下$fp看看效果,输出的是不是只有类型提示的是resource var_dump($fp); ?>
2. ファイルを読み取ります
<?php $fp = fopen('file.txt', "r"); //打开一个文件类型后,读取12个字节 $contents = fread($fp, 12); ?>
3. ファイルを閉じます
<?php $fp = fopen('file.txt', 'r'); $contents = fread($fp, 1024); fclose($fp); echo $contents; ?>
プログラムの実行結果:
どういたしまして
fwrite でファイルを書き込みます
file_put_contents (string $file path, string $write data])
機能: 指定されたファイルに文字列を書き込み、ファイルが存在しない場合はファイルを作成します。返されるのは、書き込まれたバイトの長さです
インスタンス
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $data = "我是一个兵,来自老百姓"; $numbytes = file_put_contents('binggege.txt', $data); if($numbytes){ echo '写入成功,我们读取看看结果试试:'; echo file_get_contents('binggege.txt'); }else{ echo '写入失败或者没有权限,注意检查'; } ?>
プログラムの実行結果:
書き込みは成功しました。結果を読んで見てみましょう: 私は兵士、庶民から
fwrite ( resource $ file resource variable, string $ write string [, int length])
注 : fwrite のエイリアス関数は fputs です
上記の r モードを試しましたが、これは読み取り時にのみ使用されました。 次に、fopen で fwrite plus w を使用し、書き込みモードでファイルを書き込みます
例
ことができます。新しい test.txt ファイルを作成し、そこにコンテンツを書き込んでみてください。次に、test.txt を削除してみてください。どのようなヒントがあるのか見てみましょう。
<?php header("Content-type:text/html;charset=utf-8"); //设置编码 $filename = 'test.txt'; $fp= fopen($filename, "w"); $len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘'); fclose($fp); print $len ."字节被写入了\n"; ?>
プログラムの実行結果:
66バイトが書き込まれました
概要:
1. ファイルが作成されたかどうかに関係なく、ファイルが開かれて書き換えられます
2. 元のファイルの内容は上書きされます
3. ファイルが存在しない場合は作成されます
次のモードの違いを比較してください:
r+wのみ書き込み機能可能 | w+ | は読み書き両方可能||||||||||||||||||||||||||||||||||||||||||||
例 <?php header("Content-type:text/html;charset=utf-8"); //设置编码 $filename = 'test.txt'; $fp= fopen($filename, "r"); $len = fwrite($fp, '我是一只来自南方的狼,一直在寻找心中的花姑娘'); fclose($fp); print $len .'字节被写入了\n'; ?> プログラムの実行結果:
rだけでの書き込みは失敗したことが分かりました 一時ファイルを作成する 以前に作成したファイルは永続ファイルです。 一時ファイルの作成は、日々のプロジェクト開発にも非常に役立ちます。一時ファイルを作成するいくつかの利点 1. 使用後に削除される 2. このファイルの削除ステータスを維持する必要がありません 例: A のファイルの内容を B に転送する必要があります。 B それを C に転送します。 現実世界と同じように、まず一時的なボトルを使用して B の水を満たし、次に A のデータを B に書き込むことができます。仮ボトルの水をCに加えます。 この関数を学習しましょう: resource tmpfile ( ) 関数: 一時ファイルを作成し、リソースタイプを返します。ファイルを閉じると削除されます。 インスタンス <?php header("Content-type:text/html;charset=utf-8"); //设置编码 $handle = tmpfile(); //向里面写入了数据 $numbytes = fwrite($handle, '写入临时文件的内容'); //关闭临时文件,文件即被删除 fclose($handle); echo '向临时文件中写入了'.$numbytes . '个字节'; ?> プログラムの実行結果:
ファイルの移動、コピー、削除 ファイルの名前を変更します rename($old name,$new name); この関数は、古い名前を新しい名前に変更するブール値を返します。 例 <?php $fileName1="text.txt"; $fileName2="text--1.txt"; rename($fileName1,$fileName2); ?> 上記の例は、text.txt ファイルの名前を text-1.txt に変更することです ファイルをコピーしてください copy(source file, target file) 機能: 指定されたパスを持つソースファイルをターゲットファイルの場所にコピーします。 例 <?php $filename = 'file.txt'; //旧文件名 $filename2 = 'copy-file.txt'; //新文件名 copy($filename, $filename2); //修改名字。 ?> 上記の例は、file.txt という名前のファイルを、同じ内容を持つ copy-file.txt という名前のファイルにコピーすることです。 ファイルを削除 リンク解除(指定されたパスのファイル) 例 <?php header("Content-type:text/html;charset=utf-8"); //设置编码 $filename = 'test.txt'; unlink($filename); ?> 上記の例は、test.txtという名前のファイルを削除します よくあることファイルに使用される関数 filesizeファイルサイズを検出 例 <?php header("Content-type:text/html;charset=utf-8"); //设置编码 $filename = 'file.txt'; echo $filename . '文件大小为: ' . filesize($filename) . ' bytes'; ?> プログラムの実行結果:
その他ファイル操作、ファイル読み込み関数
上記のすべての関数を使用する例を使用します。 text.txt ファイルにファイルのバッチを書き込みます:
fgetc は一度に 1 つずつ読み取ります <?php //以增加的r模式打开 $fp = fopen('text.txt','r+'); //你分发现每次只读一个字符 echo fgetc($fp) ."<br>"; //我要全部读取可以,读取一次将结果赋值一次给$string while($string = fgetc($fp)){ echo $string; } ?> プログラム実行結果:
fgets は一度に 1 行ずつ開きます: <?php //以增加的r模式打开 $fp = fopen('text.txt','r+'); //你分发现每次只读一个字符 echo fgets($fp)."<br>"; echo fgets($fp)."<br>"; echo fgets($fp)."<br>"; echo fgets($fp); ?> プログラムの実行結果:
ファイル傍受関数 <?php //打开我们上面的text.txt文件 $file = fopen("text.txt", "a+"); //你可以数数20个字有多长,看看是不是达到效果了 echo ftruncate($file,10); fclose($file); ?> プログラムを実行すると、text.txtファイルを開いて20バイトがあるかどうかを確認できます ファイルのtime関数
インスタンス <?php header("Content-type:text/html;charset=utf-8"); //设置编码 $filename = 'text.txt'; if (file_exists($filename)) { echo "$filename"."文件的上次访问时间是: " . date("Y-m-d H:i:s", fileatime($filename))."<br>"; echo "$filename"."文件的创建时间是: " . date("Y-m-d H:i:s", filectime($filename))."<br>"; echo "$filename"."文件的修改时间是: " . date("Y-m-d H:i:s", filemtime($filename)); } ?> プログラム実行結果:
ディレクトリ処理関数 以前は、すべてでは、ディレクトリとフォルダーをどのように扱うか? ディレクトリまたはフォルダーの処理に関連する関数を学びましょう。 フォルダーの処理の基本的な考え方は次のとおりです。 1. パスを読み取るときに、それがフォルダーであるかどうかを判断します。 2. フォルダーである場合は、指定されたフォルダーを開きます。フォルダーを指定してファイルを返します ディレクトリのリソース変数 3. readdir を使用してディレクトリ内のファイルを 1 回読み取り、ディレクトリ ポインターを一度オフセットします 4. readdir を使用して最後まで読み取ります。読み取り可能なファイル、false を返します 5. ファイル ディレクトリを閉じます より一般的に使用される関数について学びましょう:
インスタンス <?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 />'; echo readdir($dh).'<br />'; echo readdir($dh).'<br />'; //读取到最后返回false //关闭文件夹资源 closedir($dh); } } ?> を実行できますプログラムをチェックして、それがコンピュータのDドライブのディレクトリではないことを確認してください ファイルの種類を決定してください <?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); } } ?> プログラムを実行して確認してください ファイルパス関数 ファイルパスの処理ケースによく遭遇します。 例: 1. ファイルのサフィックスを取り出す必要があります 2. パスはディレクトリではなく名前から取り出す必要があります 3.パス名にディレクトリパスを入れます 4. または URL に入れます各部分が解析されて独立した値が得られます 5. URL を自分で作成することもできます 多くの場所でパス処理の使用が必要ですクラス関数。 一般的に使用されるパス処理関数を誰でも簡単に処理できるようにしました:
pathinfo pathinfo ( string $path) 例 <?php header("Content-type:text/html;charset=utf-8"); $path_parts = pathinfo('D:/www/a.html'); echo '文件目录名:'.$path_parts['dirname']."<br />"; echo '文件全名:'.$path_parts['basename']."<br />"; echo '文件扩展名:'.$path_parts['extension']."<br />"; echo '不包含扩展的文件名:'.$path_parts['filename']."<br />"; ?> プログラムの実行結果:
basename basename ( string $path[, string $suffix ]) 例 <?php echo "1: ".basename("d:/www/a.html", ".d")."<br>"; echo "2: ".basename("d:/www/include")."<br>"; echo "3: ".basename("d:/www/text.txt")."<br>"; ?> プログラムの実行結果:
dirname ディレクトリ名(文字列 $path ) インスタンス <?php $a=dirname(__FILE__); echo$a; ?> プログラムを実行します parse_url parse_ URL (string $path) 例 <?php $url = 'http://username:password@hostname:9090/path?arg=value#anchor'; var_dump(parse_url($url)); ?> プログラム実行結果:
|