PHPファイルの扱いLOGIN

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 とエラーが返されます。
tWindowsで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';
?>

プログラムの実行結果:

nに0バイトが書き込まれました

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 . '个字节';
?>

プログラムの実行結果:

一時ファイルに27バイトを書き込みます


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

ファイルの名前を変更します

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';
?>

プログラムの実行結果:

file.txtのファイルサイズ: 14バイト

その他ファイル操作、ファイル読み込み関数

関数名 関数
fileファイル全体を配列中に読み込みます
fgetsはファイルポインタから1行読み込み、最後まで読んだらfalseを返します
fgetcはファイルポインタから文字を読み込み、最後まで読んだ後にfalseを返します
ftruncate ファイルは指定された長さに切り詰められます


上記のすべての関数を使用する例を使用します。

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

abcdeefghijklk
opqrst
uvwxyz
12345678

fgetc は一度に 1 つずつ読み取ります

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

プログラム実行結果:

a
bcdeefghijklk opqrst uvwxyz 12345678

fgets は一度に 1 行ずつ開きます:

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

プログラムの実行結果:

abcdeefghijklk
opqrst
uvwxyz
12345678


ファイル傍受関数

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

プログラムを実行すると、text.txtファイルを開いて20バイトがあるかどうかを確認できます


ファイルのtime関数

関数 関数の説明
filectime ファイル作成時間
filemtime ファイル変更時間
fileatime ファイルの最終アクセス時刻

インスタンス

<?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));
}

?>

プログラム実行結果:

text.txtファイルの最終アクセス時刻:2016-09-13 17:44:40
text.txtファイルの作成時刻は: 2016 -09-13 17:32:16
text.txt ファイルの変更時刻は: 2016-09-13 17:44:55


ディレクトリ処理関数

以前は、すべてでは、ディレクトリとフォルダーをどのように扱うか? ディレクトリまたはフォルダーの処理に関連する関数を学びましょう。

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

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

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

3. readdir を使用してディレクトリ内のファイルを 1 回読み取り、ディレクトリ ポインターを一度オフセットします

4. readdir を使用して最後まで読み取ります。読み取り可能なファイル、false を返します

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

より一般的に使用される関数について学びましょう:


オープンディレクトリ readdir is_dir closedir
関数名 関数
フォルダーを開いて操作リソースに戻る
フォルダーリソースを読む
フォルダーかどうか判断する
フォルダー操作リソースを閉じる
Filetypeはフォルダーかファイルかを示し、ファイルはファイルを示し、フォルダーはディレクトリを示します


インスタンス

<?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 を自分で作成することもできます

多くの場所でパス処理の使用が必要ですクラス関数。

一般的に使用されるパス処理関数を誰でも簡単に処理できるようにしました:

返品ファイルのさまざまなコンポーネントbasenameファイル名を返す dirnameファイルディレクトリ部分 parse_url URLはその部分に分割されます
関数名 機能
pathinfo
http_build_query URL にクエリ文字列を生成します
http_build_url 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 />";
?>

プログラムの実行結果:

ファイルディレクトリ名: D:/www
完全なファイル名: a.html
ファイル拡張子: html
拡張子なしのファイル名: a


basename

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

<?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>";
?>

プログラムの実行結果:

1: a.html
2: include
3: text.txt


dirname

ディレクトリ名(文字列 $path )
関数: ファイル パスのファイル ディレクトリ部分を返します

インスタンス

<?php
$a=dirname(__FILE__);
echo$a;
?>

プログラムを実行します


parse_url

parse_ URL (string $path)
関数: URLをさまざまな部分に分割します

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

プログラム実行結果:

array(8) {
["scheme"]=>
string(4) "http"
["host "]=>
string(8) "ホスト名"
["ポート"]=>
int(9090)
["ユーザー"]=>
string(8) "ユーザー名"
["パス"] =>
string(8) "パスワード"
["path"]=>
string(5) "/path"
["クエリ"]=>
string(9) "arg=value "
[ "fragment"]=> Data)
機能: URL にクエリ文字列を生成します

インスタンス

<?php
//定义一个关联数组
$data = [
    'username'=>'liwenkai',
    'area'=>'hubei',
    'pwd'=>'123'
];
//生成query内容
echo http_build_query($data);
?>

プログラムの実行結果:

username=liwenkai&area=hubei&pwd=123


PHP ファイルシステム リファレンス マニュアル

必要な場合PHP ファイルシステム関数の完全なリファレンス マニュアルについては、PHP ファイルシステム リファレンス マニュアルを参照してください。


次のセクション
<?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 '写入失败或者没有权限,注意检查'; } ?>
コースウェア
    なし