2. 現在のディレクトリを取得して変更します。 現在の作業ディレクトリは、パラメータのない getcwd() 関数を使用して取得できます。成功した場合は現在の作業ディレクトリを返し、失敗した場合は FALSE を返します 3. ディレクトリハンドルを開いたり閉じたりします。 オープンディレクトリ($dir) クローズ済み($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 に示されています。 $モード 説明する 「r」 ファイルを読み取り専用モードで開き、ファイルの先頭から読み取ります。 「r+」 ファイルを読み取り/書き込みモードで開き、ファイルの先頭から読み取りと書き込みを開始します。 「わ」 ファイルを書き込みモードで開き、ファイル ポインタをファイル ヘッダーにポイントします。ファイルがすでに存在する場合は既存のコンテンツを削除し、ファイルが存在しない場合は作成してみてください。 「w+」 ファイルを読み取り/書き込みモードで開き、ファイル ポインタをファイル ヘッダーにポイントします。ファイルがすでに存在する場合は既存のコンテンツを削除し、ファイルが存在しない場合は作成してみてください。 「あ」 ファイルを書き込みモードで開き、ファイル ポインタをファイルの末尾にポイントします。ファイルにすでにコンテンツがある場合は、ファイルの末尾から書き込まれます。ファイルが存在しない場合は作成してみてください 「a+」 ファイルを読み取り/書き込みモードで開き、ファイル ポインタをファイルの末尾に指します。ファイルにすでにコンテンツが含まれている場合、読み取りと書き込みはファイルの末尾から開始されます。ファイルが存在しない場合は作成してみてください 'バツ' ファイルポインタをファイルヘッダーにポイントして、書き込み用にファイルを作成して開きます。ファイルが既に存在する場合、 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 アドレスを開く場合、 次に、この変数は、FTP アドレスが開かれている場合は、HTTP リクエストのリクエスト タイプ、HTTP バージョン、およびその他のヘッダー情報を記録します。 記録されるのは、FTP のパッシブ/アクティブ モードである可能性があります2.ファイルを閉じます bool fclose(リソース $ハンドル) 4.ファイルの書き込み ファイルが存在しない場合は、書き込む前にファイルを開く必要があります。通常は、fopen() 関数を使用して作成します。 ●fwrite() ファイルを開いた後、ファイルに内容を書き込みます。 int fwrite(リソース $ハンドル, 文字列 $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() 関数を使用してファイルの内容を読み取ることができます。構文形式は次のとおりです。 文字列 fread(int $handle, int $length) 説明: パラメータ $handle は、開いているファイル ポインタです。 $length は読み取る最大バイト数を指定し、$length の最大値は 8192 です。 $length バイトを読み取る前にファイルの終わりフラグ (EOF) が検出された場合、読み取られた文字が返され、読み取り操作が停止します。 読み取りが成功した場合は読み取った文字列が返され、エラーが発生した場合は FALSE が返されます。 注: ファイルを読み込んでファイルの内容を表示する場合、テキスト中に HTML タグなど、直接表示できない文字が含まれる場合があります。 このとき、htmlspecialchars() 関数を使用して HTML タグをエンティティに変換し、ファイル内の文字を表示する必要があります。 2. ファイル全体を読む ●file()関数。 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() 関数は、ファイル ポインターから文字を読み取ることができます。構文形式は次のとおりです。 文字列 fgetc(リソース $ハンドル) この関数は、$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 ディレクトリに移動する
2.ファイルのダウンロード header() 関数の機能は、正しい HTTP ヘッダーをブラウザーに送信することです。ヘッダーは、Web ページのコンテンツのタイプ、ページ属性、その他の情報を指定します。 header() 関数には多くの関数がありますが、ここでは次の関数のみを示します。 ●ページジャンプ。 header()関数のパラメータが「Location: xxx」の場合、自動的に「xxx」が指すURLへジャンプします。例えば: header("場所: http://www.baidu.com"); //百度のページにジャンプします 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.ファイルを削除する リンクを解除() 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 投票統計
声明: この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。 |