ホームページ >バックエンド開発 >PHPチュートリアル >PHP ディレクトリとファイルの処理 - Zheng Aqi (続き)_PHP チュートリアル

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

WBOY
WBOYオリジナル
2016-07-21 15:26:40820ブラウズ

1. ファイル ディレクトリの操作
最上位はディスク ルート ディレクトリです。「/」または「//」を使用します。
現在のディレクトリ。/
../ は、htdocs ディレクトリである Apache ディレクトリを表します。
1. directory 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() 関数を使用して生成できるリソース変数です。この変数には、特定の操作オブジェクトに関連するデータが格納されます。
関数が成功すると、指定されたパスにあるすべてのディレクトリとファイル名を含む配列が返されます。
2. ファイルのオープンとクローズの一般的な方法
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+'
読み取り/書き込みモードでファイルを開き、ファイル ポインタをファイルの末尾にポイントします。ファイルにすでにコンテンツが含まれている場合、読み取りと書き込みはファイルの末尾から開始されます。ファイルが存在しない場合は、ファイルの作成を試みます
'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 は書き込まれるファイルハンドルです。
$string はファイルに書き込まれる文字列データです。
$length はオプションのパラメーターです。$length が指定されている場合、$string 内のデータの最初の $length バイトが書き込まれた後に書き込みが停止します。
●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 は読み取られる最大バイト数、および $ の最大値です。長さは8192です。
$length バイトを読み取る前にファイルの終わりフラグ (EOF) が検出された場合、読み取られた文字が返され、読み取り操作が停止します。
読み取りが成功した場合は読み取った文字列が返され、エラーが発生した場合はFALSEが返されます。
注意: ファイルを読み取った後にファイルの内容を表示する場合、テキストには HTML タグなど、直接表示できない文字が含まれる場合があります。
現時点では、htmlspecialchars() 関数を使用して HTML タグをエンティティに変換し、ファイル内の文字を表示する必要があります。
2. ファイル全体を読み込みます
●file()関数。 file() 関数は、ファイル全体を配列に読み取るために使用されます。構文形式は次のとおりです。
array file(string $filename [, int $use_include_path [, resource $context ]])
説明: この関数は、関数はファイルを変換することです。配列として返されます。配列内の各セルは、改行を含むファイル内の対応する行です。
失敗した場合は FALSE を返します。パラメータ$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)
この関数は、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 ディレクトリに移動します



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

!-- HTMLフォーム-->
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/"; //HTTP POST経由でアップロードするかどうかを決定します
{
if(move_uploaded_file($tmp_filename,$dir .$filename)) //ファイルをアップロードして移動します
{
echo "ファイルは正常にアップロードされました!"
//出力ファイル サイズ
echo "ファイル サイズは次のとおりです:"; $_FILES['myFile']['size'] /1024)."kb";
}
else
echo "ファイルのアップロードに失敗しました!";
}
}
}
else
{
echo "は GIF 画像ではありません!";
}
}
?>


2. ファイルのダウンロード
header() 関数は、正しい HTTP ヘッダーをブラウザーに送信することです。ヘッダーは 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() 関数は、ファイルのサイズを計算するために使用されます。 bytes
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 投票統計



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



現在最も人気のある Web 開発言語:
="ラジオ" name="投票" value="PHP">PHP
ASP
gt; JSP


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

に従って分割します!

";
if($vote=='PHP')
$votearray[0]++; //PHP が選択されている場合、配列の最初の値が 1 ずつ増加します
echo "現在の数値PHP への投票数: ".$votearray[0]."
";
if($vote=='ASP')
$votearray [1]++; //ASP が選択されている場合、配列の 2 番目の値に 1 を追加します
echo "ASP の現在の投票数: ".$votearray[1] ]."if($vote=='JSP')
$votearray[2]++; //JSP が選択されている場合、配列の 3 番目の値がインクリメントされます。 by 1
echo "JSP の現在の投票数は次のとおりです: ".$votearray[2]."
";投票数
$sum=$votearray[0]+$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>";
}
}
?>





http://www.bkjia.com/PHPjc/323885.html
www.bkjia.com

tru​​e

技術記事 1. ファイル ディレクトリ操作の最上位はディスク ルート ディレクトリです。現在のディレクトリとして「/」または「//」を使用します。/ ../ は、htdocs ディレクトリである Apache ディレクトリを表します。ディレクトリ mkdir に次のようにコードをコピーします。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。