ホームページ >php教程 >php手册 >PHP ディレクトリとファイルの処理 - Zheng Aqi (続き)

PHP ディレクトリとファイルの処理 - Zheng Aqi (続き)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-21 08:54:201133ブラウズ

1. ファイル ディレクトリの操作
最上位のディレクトリはディスク ルート ディレクトリです。「/」または「//」を使用して
現在のディレクトリ./
../ を指定し、Apache ディレクトリを指定します。 htdocs ディレクトリ
1 .ディレクトリの作成と削除 mkdir

コードをコピー コードは次のとおりです:


if(mkdir("./path",0700)) //カレントディレクトリにパスディレクトリを作成します。
echo "作成に成功しました"; <🎜; >

2. 現在のディレクトリを取得および変更します。
getcwd() 関数を使用して現在の作業ディレクトリを取得します。この関数にはパラメータがありません。成功した場合は現在の作業ディレクトリを返し、失敗した場合は FALSE を返します。
3. ディレクトリ ハンドルを開いて閉じます。
opendir($dir)
closed($dir_handle)
4. ディレクトリの内容を読み取ります。
readdir()、このパラメータはすでに開かれているディレクトリ ハンドルであり、while ループでディレクトリを走査するために使用できます。
5. 指定されたパス内のディレクトリとファイルを取得します。
array scandir(string $directory [, int $sorting_order [, resource $context ]])
説明: $directory は指定されたパスです。パラメータ $sorting_order はデフォルトでアルファベット昇順でソートされます。1 に設定すると、アルファベット降順でソートされます。
$context はオプションのパラメータであり、stream_context_create() 関数を使用して生成できるリソース変数です。この変数には、特定の操作オブジェクトに関連するデータが格納されます。
関数が成功すると、指定されたパスにあるすべてのディレクトリとファイル名を含む配列が返されます。失敗した場合は、FALSE が返されます。
2. ファイルを開く一般的な方法
3.ファイルを閉じる
1 .ファイルを開きます
resource fopen(string $filename , string $mode [, bool $use_include_path [, resource $context ]])
●$filename パラメーター。 fopen() 関数は、$filename パラメーターで指定された名前リソースをストリーム
●$mode パラメーターにバインドします。 $mode パラメータは、fopen() 関数がファイルにアクセスするモードを指定します。値は表 4.5 に示されています。
$mode
説明
'r'
読み取り専用モードでファイルを開き、ファイルヘッダーから読み取りを開始します
'r+'
読み取り/書き込みモードでファイルを開きます、ファイルヘッダーから読み取りと書き込みを開始します
'w'
書き込みモードでファイルを開き、ファイルポインターをファイルヘッダーにポイントします。ファイルが既に存在する場合は、既存のコンテンツを削除します。ファイルが存在しない場合は、ファイルの作成を試みます。
'w+'
ファイルを読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。ファイルが既に存在する場合は、既存のコンテンツを削除します。ファイルが存在しない場合は、ファイルを作成してください。
'a'
ファイルを書き込みモードで開き、ファイル ポインタをファイルの末尾に向けます。ファイルにすでにコンテンツがある場合は、ファイルの最後から書き込みが開始されます。ファイルが存在しない場合は、ファイルの作成を試みます。
'a+'
読み取り/書き込みモードでファイルを開き、ファイル ポインタをファイルの末尾にポイントします。ファイルにすでにコンテンツが含まれている場合、読み取りと書き込みはファイルの末尾から開始されます。ファイルが存在しない場合は、ファイルの作成を試みます
'x'
書き込み用にファイルを作成して開き、ファイル ポインターをファイル ヘッダーにポイントします。ファイルが既に存在する場合、 fopen() 呼び出しは失敗して FALSE を返し、E_WARNING レベルのエラー メッセージが生成されます。ファイルが存在しない場合は、ファイルの作成が試行されます。このオプションは PH 以降のバージョンでサポートされており、ローカル ファイルに対してのみ使用できます。
'x+'
ファイル ポインターをファイル ヘッダーにポイントして、読み取り/書き込みモードでファイルを作成して開きます。ファイルが既に存在する場合、 fopen() 呼び出しは失敗して FALSE を返し、E_WARNING レベルのエラー メッセージが生成されます。ファイルが存在しない場合は、ファイルの作成が試行されます。このオプションは PH 以降のバージョンでサポートされており、ローカル ファイル
'b'
バイナリ モードでのみ使用でき、他のモードの背後で接続するために使用されます。ファイル システムがバイナリ ファイルとテキスト ファイルを区別できる場合 (Windows では区別できますが、UNIX では区別できません)、このオプションを使用する必要があります。移植性を最大限に高めるために、常にこのオプションを使用することをお勧めします。

●$use_include_path パラメータ。 。 include_path (PHP のインクルード パス、PHP の設定ファイルで設定) 内のファイルを検索する必要がある場合、
オプションのパラメーター $use_include_path の値を 1 または TRUE に設定できます。デフォルトは FALSE です。
●$contextパラメータ。オプションの $context パラメータは、ファイルがリモートで開かれる場合 (HTTP 経由で開く場合など) にのみ使用されます。これは、fopen() 関数の特定の操作オブジェクトに関連するデータを格納するリソース変数
です。 fopen() が HTTP アドレスを開く場合、
は、リクエスト タイプ、HTTP バージョン、および HTTP リクエストのその他のヘッダー情報を記録します。FTP アドレスを開く場合、
は FTP パッシブ/アクティブ モードを記録します。 🎜> 2. ファイルを閉じます
bool fclose(resource $handle)
4. ファイルの書き込み
ファイルが存在しない場合は、最初にファイルを作成する必要があります。 () 関数作成
●fwrite() ファイルを開いた後、ファイルに内容を書き込みます
int fwrite(resource $handle, string $string [, int $length])
説明: パラメータ$handle が書き込まれます データのセクションの後に書き込みを停止するファイル ハンドル。
●file_put_contents()関数。 PHP 5 では、file_put_contents() 関数も導入されました。この関数の機能は、fopen()、fwrite()、fclose() 関数を順番に呼び出したのと同じです。構文形式は次のとおりです。
int file_put_contents(string $filename, string $data [, int $flags [, resource $context ]])
説明: $filename は、データが保存されるファイルの名前です。書かれること。
$data は書き込まれる文字列です。$data は配列にすることもできますが、多次元配列にすることはできません。
FTP または HTTP を使用してリモート ファイルにデータを書き込む場合、オプションのパラメーター $flags および $context を使用できますが、ここでは詳しく説明しません。
この関数は、書き込みが成功した後に書き込まれたバイト数を返します。それ以外の場合は、FALSE を返します。
●fputcsv()関数。 CSV は一般的に使用されるファイル形式で、通常は拡張子が .csv です。 CSV 形式はファイルの 1 行をレコードとして扱い、レコード内のフィールドはカンマで区切られます。
PHP の fputcsv() 関数を使用して、指定された配列を CSV ファイル形式に準拠した内容にフォーマットし、ファイル ポインターが指す現在の行を書き込みます。構文形式は次のとおりです。
int fputcsv(resource $handle [, array $fields [, string $delimiter [, string $enclosure ]]])
説明: パラメーター $handle は、ファイル ハンドルです。書かれた。
パラメータ $fields はフォーマットされる配列です。
オプションの $delimiter パラメータは、フィールド区切り文字 (1 文字のみ使用可能) を設定するために使用されます。デフォルトはカンマです。
オプションの $enclosure パラメータはフィールド ラッパーを設定します (1 文字のみが許可されます)。デフォルトは二重引用符です
5 ファイルの読み取り
1. 任意の長さを読み取ります
fread() 関数を使用できますファイルの内容を読み取るための構文形式は次のとおりです:
string fread(int $handle, int $length)
説明: パラメータ $handle はオープン ファイル ポインタ、
$length は指定された読み取りの最大バイト数、$length の最大値は 8192 です。
$length バイトを読み取る前にファイルの終わりフラグ (EOF) が検出された場合、読み取られた文字が返され、読み取り操作が停止します。
読み取りが成功した場合は読み取った文字列を返し、エラーが発生した場合は FALSE を返します。
注: ファイルを読み取った後にファイルの内容を表示する場合、テキストには HTML タグなど、直接表示できない文字が含まれる場合があります。
現時点では、htmlspecialchars() 関数を使用して HTML タグをエンティティに変換し、ファイル内の文字を表示する必要があります。
2. ファイル全体を読み込みます
●file()関数。 file() 関数は、ファイル全体を配列に読み取るために使用されます。構文形式は次のとおりです。
array file(string $filename [, int $use_include_path [, resource $context ]])
説明:この関数は、ファイルを配列として返します。
失敗した場合は、配列内の対応する行を返します。パラメータ$filenameは読み込むファイル名です。パラメータ$use_inclue_pathと$contextの意味は、以前紹介した
●readfile()関数と同じです。 readfile() 関数は、ファイルの内容をブラウザに出力するために使用されます。構文形式は次のとおりです。
int readfile(string $filename [, bool $use_include_path [, resource $context ]])
●fpassthru()関数。 fpassthru() 関数は、指定されたファイル ポインターを現在位置から EOF まで読み取り、結果を出力バッファーに書き込みます。
この関数を使用するには、まず fopen() 関数を使用してファイルを開き、次にファイル ポインタをパラメータとして fpassthru() 関数に渡す必要があります。
fpassthru() 関数は、ファイルの内容を送信します。標準出力へのファイルポインタが指すファイル。操作が成功した場合は読み取られたバイト数を返し、それ以外の場合は FALSE を返します。
●file_get_contents()関数。 file_get_contents() 関数は、ファイルの内容の全体または一部を文字列に読み取ることができます。
関数は、fopen()、fread()、および fclose() 関数を順番に呼び出すことと同じです。構文形式は次のとおりです。
string file_get_contents(string $filename [, int $offset [, int $maxlen ]])
説明: $filename は読み取るファイル名で、オプションのパラメーター $offset です。
関数は、先頭の先頭からのオフセットからファイルを指定できます。$offset で指定された位置から $maxlen の長さのコンテンツを返すことができます。失敗した場合、関数は FALSE を返します

3. データ行を読み取ります
●fgets() 関数。 fgets() 関数は、ファイルからテキスト行を読み取ることができます。構文形式は次のとおりです。
string fgets(int $handle [, int $length])
説明: $handle は、開かれたファイル ハンドルです。 、オプションのパラメータ $length は、行末文字を考慮して、最大 length-1 バイトの文字列を返すことができます。 $length が指定されていない場合、デフォルトは 1024 バイトになります
●fgetss() 関数は基本的に fgets() と同じですが、fgetss() 関数は読み取ったテキストから html タグと php タグを削除しようとします。
●fgetcsv()関数。 fgetcsv() 関数は、指定されたファイルの現在行を読み取り、CSV 形式を使用してフィールドを解析し、これらのフィールドを含む配列を返すことができます。
構文形式は次のとおりです。
array fgetcsv(int $handle [, int $length [, string $delimiter [, string $enclosure ]]])
4. 文字を読み取ります
fgetc () 関数。 fgetc() 関数は、ファイル ポインターから文字を読み取ることができます。構文形式は次のとおりです。
string fgetc(resource $handle)
この関数は、$handle ポインターが指すファイル内の文字を返します。 EOF が見つかった場合は FALSE
5. 指定された形式の
fscanf() 関数を使用してファイルを読み取ります。 fscanf() 関数は、ファイル内のデータを読み取り、指定された形式に従ってフォーマットし、配列を返すことができます。構文は次のとおりです。
mixed fscanf(resource $handle , string $format [,mixed &$... ])
フォーマット文字列内の空白は、入力ストリーム内の空白と一致します。
これは、フォーマット文字列内のタブ文字「t」であっても、入力ストリーム内のスペース文字と一致することを意味します。
6. ファイルのアップロードとダウンロード
1. ファイルのアップロード
ファイルのアップロードは、HTML フォームを送信することで実行できます。ファイルはアップロード後、デフォルトで一時ディレクトリに保存されます。このとき、一時ディレクトリから削除するか、他の場所に移動する必要があります
。PHP の move_uploaded_file() を使用して別の場所に移動します
move_uploaded_file() 関数の構文形式は次のとおりです:
bool move_uploaded_file(string $filename, string $destination)
注: 確認する必要があります。ファイルを移動する前 ファイルが HTTP POST 経由でアップロードされるかどうかに関係なく、これを使用すると、悪意のあるユーザーがスクリプトをだまして、他の方法ではアクセスできないファイルにアクセスできないようにすることができます。
この場合、is_uploaded_file() 関数を使用する必要があります。 。この関数のパラメータはファイルの一時ファイル名です。ファイルが HTTP POST 経由でアップロードされた場合、関数は TRUE を返します。
例 4.5 HTML フォームからアップロードした GIF 画像ファイルを HTML ディレクトリに移動します

コードをコピーします コードは次のとおりです:



type="submit" name="up" value="ファイルをアップロード">

if(isset($_POST['up']))
{
if($_FILES['myFile']['type']=="image/gif") //ファイル形式がGIF
{
if($_FILES['myFile']['error']>0) //アップロード中にエラーがあるかどうかを判断します
echo "Error:".$_FILES['myFile ']['error ']; //エラーメッセージを出力します
else
{
$tmp_filename=$_FILES['myFile']['tmp_name']; //一時ファイル名
$filename =$_FILES[' myFile']['name']; //アップロードされたファイル名
$dir="html/"
if(is_uploaded_file($tmp_filename)) //HTTP POST 経由でアップロードするかどうかを決定します。
{
if(move_uploaded_file($tmp_filename,$dir.$filename)) // ファイルをアップロードして移動します
{
echo "ファイルが正常にアップロードされました!"
// 出力ファイル サイズ
echo " ファイルのサイズは次のとおりです: ".($_FILES['myFile']['size']/1024)."kb";
}
else
echo "ファイルのアップロードに失敗しました。 ";
}
}
}
else
{
echo "ファイル形式は GIF 画像ではありません!";
}
}
? >


2. ファイルのダウンロード
header() 関数の機能は、Web ページのコンテンツのタイプ、ページの属性、およびヘッダーをブラウザーに送信することです。その他の情報。

header() 関数には多くの関数がありますが、ここでは次の関数のみを示します。
●ページ ジャンプ。 header()関数のパラメータが「Location: xxx」の場合、自動的に「xxx」が指すURLへジャンプします。例:
header("Location: http://www.baidu.com"); //Baidu ページにジャンプします
header("Location: first.php"); //作業ディレクトリにジャンプしますfirst.php ページ
● Web コンテンツを指定します。たとえば、XML 形式の同じファイルの場合、header() 関数のパラメータが「Content-type: application/xml」と指定されている場合、
ブラウザは XML ファイル形式に従ってそれを解析します。ただし、「Content-type: text/xml」の場合、ブラウザはテキスト解析として扱います。
header() 関数と readfile() 関数を組み合わせて、閲覧するファイルをダウンロードできます
7. その他のよく使用されるファイル関数
1. ファイル サイズを計算します
filesize() 関数は次のとおりです。ファイルのサイズを計算するために使用されます。単位はバイトです
filesize() 関数と fread() 関数を組み合わせると、一度にファイル全体を読み取ることができます
2. ファイルが存在するかどうかを確認します
file_exits ()
is_dir() 関数は、指定されたファイル名がディレクトリであるかどうかを判断するために使用されます。
is_file() 関数は、指定されたファイル名がファイルであるかどうかを判断するために使用されます。
is_readable() 関数は、指定されたファイルが読み取り可能かどうかを判断するために使用されます。
is_writeable() は、指定されたファイルが書き込み可能かどうかを判断するために使用されます
3. ファイルを削除します
unlink()
4. ファイルをコピーします
bool copy(string $source, string $ dest) 、ディレクトリ ファイルが既に存在する場合は上書きされます
5. ファイルを移動して名前を変更します
move_uploaded_file() 関数に加えて、ファイルを移動できる rename() 関数もあります。
構文形式は次のとおりです:
bool rename ( string $oldname , string $newname [, resource $context ] )
説明: rename() 関数は主にファイル $oldname の名前を変更するために使用されます。はファイルです。古い名前、$newname は新しいファイル名です。
もちろん、$oldname と $newname のパスが異なっていれば、ファイルを移動する機能が実現します
6. ファイルポインタの操作
PHP には、次のようなファイルポインタを操作する関数がたくさんあります。 rewind()、ftell()、fseek() 関数など。先ほど使用した feof() 関数は、ファイルポインタがファイルの末尾にあるかどうかをテストするために使用されます。
もファイルポインタ操作関数です。
rewind() 関数。ファイル ポインターの位置をリセットして、ポインターがファイルの先頭に戻るようにするために使用されます。パラメーターは 1 つだけあり、それは開かれている指定されたファイルのファイル ハンドルです。
ftell() 関数。ファイル内のポインタの位置、つまりファイル ストリーム内のオフセットはバイト単位で報告できます。そのパラメータは、開かれたファイル ハンドルでもあります。
fseek() 関数。ファイル ポインタの移動に使用できます。構文形式は次のとおりです。
int fseek ( resource $handle , int $offset [, int $whence ] )
例 4.8 投票統計



コードをコピーします

コードは次のとおりです:




;tr>



現在最も人気のある Web 開発言語:
PHP
< input type="radio" name="vote" value="ASP">ASP

$votefile="EX4_6_vote.txt";テキスト ファイル $votefile
if(!file_exists($votefile)) //ファイルが存在するかどうかを判断します
{
$handle=fopen($votefile,"w+") //ファイルが存在しない場合は作成します存在します ファイル
fwrite($handle,"000") //ファイルの内容を初期化します
}
if(isset($_POST['sub']); )
{
if(isset($_POST['vote'])) //ユーザーが投票したかどうかを判断します
{
$vote=$_POST['vote']; // vote value
$handle=fopen($votefile,"r+");
$votestr=fread($handle,filesize($votefile)); // ファイルの内容を文字列に読み込みます $votestr
fclose($ handle);
$votearray=explode("", $votestr); // $votestr を ""
echo "

に従って分割します。

";
if($vote=='PHP')
$votearray[0]++; //PHP が選択されている場合、配列の最初の値は 1 ずつ増加します
echo " PHP の現在の投票数は次のとおりです:".$votearray[0]."
"; =='ASP')
$votearray[1]++; //ASP が選択されている場合、配列の 2 番目の値は 1 ずつ増加します
echo "ASP の現在の投票数は次のとおりです: < ;font size=5 color=red>".$votearray[ 1]."
";
if($vote=='JSP')
$votearray[2] ++; //JSP が選択されている場合、配列の 3 番目の値に 1 を追加します。
echo "JSP の現在の投票数は次のとおりです: ".$votearray[2] ]."
";
//投票総数
$sum=$votearray[1]+$votearray[2]
echo "投票の合計数は次のとおりです: ".$sum. "
";
$votestr2=implode("",$votearray); //投票後の新しい配列を "" を使用して文字列に連結します $votestr2
$handle= fopen($votefile,"w+")
fwrite($handle,$votestr2);ファイルへ $votefile
fclose($handle);
}
else
{
echo "<script>alert('投票オプションが選択されていません!')</script> ";
}
}
?>





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。