ファイル処理関数
1. ファイル操作
ファイルを開く: 指定されたファイルが存在しない場合、対応するオブジェクトが返されます。文書が自動的に作成されます。
Resource fopen(string filename, string mode [,int use_include_path][,resource context]);
ファイル名は、ファイル パスを含むファイル名、または特定のプロトコルによって指定された URL にすることができます。リモートファイルを開く) システム切り替えによるトラブルを避けるため、パス区切り文字として「/」を使用します。
モード: ファイルを開く方法をそれぞれ設定します。
r: 読み取り専用。
モードの場合、ファイル ポインタはファイルの先頭に配置されます。 r: 読み取り専用モード - 読み取り/書き込みモードの場合、ファイル ポインタはファイルの先頭に配置されます。
w: 書き込み専用モード。ファイルが存在する場合はファイルを削除します。存在しない場合は、ファイルが自動的に作成されます。ファイルの読み取りと書き込みの場合、読み取り/書き込みファイル ポインタはファイルの先頭を指します。ファイルが存在する場合は、内容を削除して書き換えます。ファイルが存在する場合は、ファイルを独自に作成します。 、 false を返し、E_WARNING レベルのエラー メッセージを生成します
a: 追加、ファイル ポインタはファイルの末尾を指します。ファイルが存在する場合は、ファイルの末尾に直接追加します。それ以外の場合は、自分でファイルを作成します。 ( Windows のオプション)
t: 他のモードと組み合わせるために使用されます (Windows のオプション)
ファイルが誤って削除される可能性があるため、注意して fopen() 関数を使用してください。オペレーティング システムには行末の習慣が異なります (UNIX:n Windows:rn Macinitosh:r)。行末記号が正しく使用されていない場合、ファイルを開いたときに文字化けが大量に出力される可能性があります。 ", "'b'" は避けてください。
Read file:
String fgetc(resource handle);//handle が指すファイル内の文字を返します。EOF が見つかった場合は、 then Return false;
String fgets(int handle[,int length]);//ファイル ポインタが指す位置から文字列を取得し、最大長 1 バイトの文字列を返します。ポインタは有効でなければならず、fopen() または fsockopen() によって正常に開かれたファイルを指します。 length は、改行、EOF、または指定された長さに達したときに終了します。行の終わり。
string fgetss(resource handle[,int length][,string allowed_tags]);//行を読み取り、html タグと php タグを除外します。
string fread(int handle,int length) ;// 任意の長さのデータをファイルから読み取ります。 、バイナリ ファイルの読み取りにも使用できます。 handle はファイルを指すリソースで、length は length バイトを読み取るか、EOF に遭遇すると実行を停止します。 例:
コードをコピー
コードは次のとおりです:
$filename= "./files.text"; $fp=fopen($finename,"rb");
readfile()、file()、および file_get_contents() 関数。
readfile()、file() および file_get_contents() 関数。
int readfile(string filename[,bool use_include_path,resource context]); // ファイルを読み取り、バッファに書き込みます。成功した場合は読み取ったバイト数を返し、それ以外の場合は false を返します。ファイル名 ファイル名。 use_include_path パラメーターは、include_path でのファイルの検索をサポートするかどうかを制御します。true はサポートされることを意味します。 readfile 関数を使用してファイルを開いたり閉じたりする必要はありません。
array file(string filename [,bool use_include_path[,resource context]]);//ファイル全体の内容を配列に読み込みます。成功した場合は、配列内の各要素がファイル内の対応する行として返されます。そうでない場合は、 false が返されます。 string filename[,bool use_include_path[,int offset; [,int maxlen]]]]);//context は 5.0 の新しいコンテンツであり、NULL で無視できます。 offset、maxlen は 5.1 の内容です。 offset はファイルの開始位置をマークするために使用され、maxlen は読み取られるファイルの長さを設定します。この方法はバイナリ ファイルの読み取りに適しています。ファイルの内容を文字列に読み取るための推奨される方法です。オペレーティング システムでサポートされている場合は、パフォーマンスを向上させるためにメモリ マッピング テクノロジも使用されます。特殊文字 (スペースなど) を含む URL を開く場合は、urlencode() を使用して URL をエンコードします。
注: readfile()、file()、および file_get_contents() は、フォルダー全体の内容を読み取る場合は fopen() および fclose() 関数を使用する必要はありませんが、1 文字、1 行を読み取る場合には文字と任意の長さの文字。
2. ファイルへの書き込み:
int fwrite(resource handle,string[,int length]);//ファイル書き込み操作を実行します。エイリアス fputs () もあります。このメソッドは、文字列の内容をファイル ポインター ハンドルに書き込むために使用されます。 length が設定されている場合、操作は length バイトが書き込まれた後、または文字列が書き込まれた後に停止します。書き込みが成功した場合は true を返し、そうでない場合は false を返します。 注: length パラメーターが指定されている場合、php.ini ファイル内の magic_quotes_runtime オプションは無視され、文字列内のスラッシュは削除されません。バイナリ ファイルとテキスト ファイル システムを区別するには、ファイルを開くときに fopen() 関数のモード パラメータに「b」を追加する必要があります。
int file_put_contents(string filename,string data[.int flags[,resource context]]);//ファイルに文字列を書き込み、成功した場合はバイト数を返し、そうでない場合は false を返します。 flags: ファイルのロックを実装します (オプションには、file_use_include_path、file_append: 追加、lock_ex: 排他ロックが含まれます)。 context コンテキストリソース。
注: fwrite() にはファイルを書き込む機能がありますが、fopen() および fclose() 関数によってサポートされている必要があります。 file_put_contents() は、fopen()、fwrite()、および fclose() の関数を統合し、独立してファイルの書き込みを完了できます。
3. ファイルを閉じる
ファイルが開いている場合は、ファイルに対する操作が完了した後、ファイルを閉じる必要があります。そうしないと、エラーが発生する可能性があります。 。 bool fclose(resource handle);//パラメータ ハンドルが指すファイルを閉じ、成功した場合は true を返し、それ以外の場合は false を返します。
ファイルをロック
テキスト ファイルにデータを書き込む場合、他のユーザーが同時にファイルの内容を変更できないように、最初にファイルをロックする必要があります。ファイルのロックは、flock() 関数を通じて PHP に実装されます。
bool flock(int handle,int Operation);//パラメータ操作はロック許可を制御します。以下を含みます: lock_sh: 共有ロック (リーダー) を取得します。 lock_ex: 排他ロック(書き込み)を取得します。 lock_un: ロックを解除します。 lock_nb: ロック時に flock() 関数がブロックされないようにします。
ディレクトリ処理関数
ディレクトリは特殊な種類のファイルです。これはファイルなので、操作する場合は、まずファイルを開いて閲覧し、最後に忘れずに閉じる必要があります。 1. ディレクトリを開きます
成功した場合は、ディレクトリ ハンドルを返します。それ以外の場合は false を返します。ファイルを開く場合とは異なり、ディレクトリが存在しない場合、ディレクトリは自動的に作成されず、エラー メッセージがスローされます。 opendir() 関数の前に「@」記号を追加すると、エラー メッセージの出力をブロックできます。
Resource opendir(string path[,resource context]);//path は、開くディレクトリ ファイルを指定します。指定されたパスが有効なディレクトリではない場合、または権限の問題によりファイル システム エラーが発生して開けない場合、この関数は false を返し、E_WARNING レベルのエラー メッセージを生成します。
2. ディレクトリを参照します
opendir 関数と scandir 関数によって返されたハンドルを使用して、参照操作を実装します。
array scandir(string directory[,intsorting_ordering[,resource context]]);//指定されたパスの下のディレクトリとファイルを参照するために使用されます。成功した場合はファイル名を含む配列を返し、それ以外の場合は false を返します。 directory は参照するディレクトリを指定します。ディレクトリでない場合は false が返され、E_WARNING レベルのエラー メッセージが生成されます。 sort_order は並べ替え順序を設定します。デフォルトはアルファベット昇順です。このパラメータを指定すると、降順で並べ替えられます。
備考: is_dir() 関数は、指定されたファイル名がディレクトリであるかどうかを判断します。ファイル名が存在し、ディレクトリである場合は true を返し、それ以外の場合は false を返します。相対ディレクトリの場合は、その相対パスが現在の作業ディレクトリに対してチェックされます。
3. ディレクトリを閉じます。 void Closedir(resource handle);//ハンドル、閉じる作業ディレクトリのハンドル。
注: 以前に学んだように、開かれたディレクトリが存在しない場合、システムはディレクトリの作成を支援しません。次に、必要なディレクトリを自分で作成できます。次の関数を適用できます:
mkdir() 関数: 新しいディレクトリを作成し、成功した場合は true を返し、そうでない場合は false を返します。
RMdir()関数:ディレクトリを削除します。ディレクトリは空である必要があり (ディレクトリ内にファイルやサブディレクトリが存在しない)、操作権限が必要です。
unlink() 関数: ファイルを削除し、成功した場合は true、失敗した場合は false を返します。
ファイルのアップロードとダウンロードの原則 ステップの内容:
ステップ 1: アップロードされたファイルを制御し、php.ini ファイルを通じて設定します。
ステップ 2: アップロードされたファイルを判断します。アップロードするファイルのサイズや形式など
ステップ3: ファイルをアップロードする操作方法を実行します。
1. アップロードされたファイルの制御: PHP は、アップロードをサポートするかどうか、アップロードされたファイルの一時ディレクトリ、およびアップロードされたファイルを含む、アップロードされたファイルを制御します。サイズ、命令の実行時間、および命令によって割り当てられたメモリ空間。
php.ini ファイルでファイル アップロード オプションを見つけ、上記のオプションの設定を完了します。オプションの意味は次のとおりです。
file_uploads: オンの場合は、サーバーがファイルのアップロードをサポートしていることを意味します。オフの場合は、サポートされていません。通常、これはデフォルトでサポートされており、このオプションを変更する必要はありません。
Upload_tem_dir: アップロードされたファイルの一時ディレクトリ。ファイルのアップロードが成功する前に、ファイルはまずサーバーの一時ディレクトリに保存されます。ほとんどの場合、システムのデフォルト ディレクトリが使用されますが、自分で設定することもできます。
Upload_max_filesize: サーバーがアップロードできるファイルの最大サイズ (MB 単位)。システムのデフォルトは 2MB です。それを超える場合は、値を変更する必要があります。
max_execution_time: php のコマンドを実行できる最大時間 (秒単位)。非常に大きなファイルをアップロードする場合は、このコマンドを変更する必要があります。変更しないと、ファイルのタイムリーなアップロードはサーバーによって許可される範囲内になりますが、コマンドの実行可能な最大時間を超える場合は、やはりアップロードできません。
Memory_limit: php のコマンドによって割り当てられたメモリ空間 (MB 単位)。そのサイズは、非常に大きなファイルのアップロードにも影響します。
備考: クライアントでファイルのアップロードのアプリケーションを制御する場合、フォーム form の enctype 属性とメソッド属性、および隠しフィールド MAX_FILE_SIZE
enctype="multipart/form-data":フォームエンコードデータ方式を指定します。
Method="post": データ送信の方法を指定します。
: 隠しフィールドを使用して、アップロードされるファイルのサイズをバイト単位で制御します。この値は、php.ini 設定ファイルの Upload_max_filesize オプションで設定された値を超えることはできません。アップロードされるファイルのサイズを完全に制御することはできず、不必要なトラブルを回避することしかできません。
2. アップロードされたファイルの決定
グローバル変数 $_FILES は、アップロードされたすべてのファイルに関する情報を含む配列です。配列内の各要素の意味は次のとおりです:
$_FILES[filename][name]: text.txt、title.jpg など、アップロードされたファイルのファイル名を格納します。
$_FILES[ファイル名][サイズ]: 保存されているファイルのサイズ (バイト単位)。
$_FILES[filename][tem_name]: ファイルを一時ディレクトリに保存するために使用されるファイル名。ファイルがアップロードされるとき、最初に一時ディレクトリに一時ファイルとして保存する必要があるためです。
$_FILES[ファイル名][タイプ]: アップロードされたファイルを保存する MIME タイプ。 MIME は、さまざまなファイル形式のタイプを指定します。各 MIME タイプは、「/」で区切られたメイン タイプとサブタイプで構成されます。例:「image/gif」のメインタイプは画像で、サブタイプはGIF形式ファイルです。 「text/html」はテキストのHTMLファイルを表します。
$_FILES[filename][error]: ファイルアップロードのエラーコードを格納します: この項目は、PHP4.2.0 バージョンで追加されました。戻り値は5種類あります。
0: エラーがないことを示します。ファイルが正常にアップロードされました。
1: アップロードされたファイルのサイズが設定ファイルディレクティブのupload_max_filesizeオプションの制限値を超えていることを示します。
2: アップロードされたファイルのサイズが、HTML フォームの max_file_size オプションで指定された値を超えていることを示します。
3: ファイルの一部のみがアップロードされていることを示します。
4: ファイルがアップロードされていないことを示します。
例:
コードをコピー コードは次のとおりです:
/*写真をアップロードするかどうかを決定*/
if(!empty($_FILES['up_picture'][name])){
/*Change画像情報は変数に代入されます*/
$type=strto lower(strstr($_FILES['up_picture'][name],"."));
if($type != '.jpg' && $type ! = '.gif') echo "アップロードしたファイル形式が間違っています";
else{
if($_FILES['up_picture'][size]<2000000 && $_FILES['up_picture' ][サイズ] >0){
echo "アップロード ファイル名:".$_FILES['up_picture'][名前]."
";
echo "アップロード ファイルの種類:"; .$type. "
";
echo "アップロード ファイル サイズ:".$_FILES['up_picture'][size]."
"; "画像のサイズが要件を満たしていません。 ";
}
}
?>
3. ファイルのアップロード。
PHP で move_uploaded_file() 関数を適用して、ファイルのアップロードを実装します。ただし、実行前に、スクリプトを通じて操作できないファイルを不正に管理することによる潜在的な攻撃を防ぐために、まず is_uploaded_file() 関数を使用して、指定されたファイルが HTTP POST 経由でアップロードされたかどうかを確認し、アップロードされている場合は true を返します。この機能により、悪意のあるユーザーがスクリプトをだましてアクセスできないファイルにアクセスすることができなくなります。 bool is_uploaded_file(string name);//指定されたファイルが HTTP POST 経由でアップロードされたかどうかを判断するために使用されます。 filename は、$_FILES['filename']['temp_name'] のような変数である必要があります。クライアントからアップロードされたファイル名は使用できません。
move_upload_file(string filename,string destination);//この関数は、サーバー内の指定された場所にファイルをアップロードするために使用されます。成功した場合は true を返し、そうでない場合は false を返します。 filename は、アップロードされたファイルの一時ファイル名、つまり $_FILES['tmp_name'] を指定し、パラメータ destination は、アップロード後に保存されるファイルの新しいパスと名前を指定します。パラメータが合法的にアップロードされたファイルではない場合、操作は行われず、関数は false を返します。正当なアップロード操作であるが、何らかの理由で移動できない場合、操作は行われず、警告が発行され、 false が返されます。
コードをコピー
コードは次のとおりです: if( !empty($_FILES[ 'up_picture' ][ 'name' ])){
if( $_FILES['up_picture']['error'] > 0){
echo "アップロード エラー!"; _FILES[' up_picture']['error']){
ケース 1:
echo "アップロードされたファイルが設定ファイルで指定された値を超えています";
ブレーク; >echo "アップロードされたファイルが指定された値を超えています";
break;
echo "アップロードされたファイルが不完全です";
echo "アップロードされたファイルがありません";
break ;
}
}else{
if( ! is_dir('./upfile/') ) mkdir('./upfile/');
$ path='./upfile/'.time().$_FILES['up_picture' ][ 'name' ]
if( is_uploaded_filed( $_FILES['up_picture' ][ 'tmp_name' ] ); >if(!move_uploaded_file( $_FILES[ 'up_picture' ][ 'tmp_name' ] ,$path )){
echo "アップロードに失敗しました!"
}else{
echo "ファイル".time( ).$_FILES['up_picture' ] [ 'name' ] ."アップロードに成功しました。サイズは次のとおりです: ".$_FILES['up_picture' ][ 'size' ] ;
}
}else{
echo "ファイルをアップロード".$_FILES[ 'up_picture' ][ 'name' ]."不正"
}
}
?>
4. ファイルのダウンロード
ここでは主に header() 関数を使用して http 経由でファイルをダウンロードする方法を紹介します。 header() 関数は HTTP 関数であり、その機能は HTML ドキュメントのヘッダーを HTTP 経由でブラウザに送信し、このページの処理方法をブラウザに指示することです。
void header(string string[,bool replace[,int http_respone_code]]);//パラメータ文字列は、送信されるヘッダーを指定します。 replace パラメーターは、複数のヘッダーが一度に送信された場合に、同様のヘッダーを置換するか追加するかを制御します。 false の場合、同じタイプの複数のヘッダーが強制的に送信されます。デフォルトは true です。パラメータ http_respone_code は、HTTP 応答コードを強制的に指定された値に設定します:
ダウンロード手順は次のとおりです:
a): 「Content-Type」でファイルの MIME タイプを指定します。
b): 「Content-Disposition」を通じてファイルを記述します。値「attachment;filename="test.jpg"」は、それが福建省であることを示し、ダウンロードされたファイルの名前も指定します。
c): 「Content-Length」でダウンロードファイルのサイズを設定します。
d): readfile() 関数を通じてファイルの内容を読み取ります。
例:
コードをコピー
コードは次のとおりです: header('Content-Type:image/ jpg');
header(' Content-Disposition:attachment;filename="test.jpg" ');
header('Content-Length:'.filesize('test.jpg') ); >readfile('test.jpg');
5. リモート ファイルにアクセスする ステップ 1: php.ini ファイルのオプションallow_url_fopen を on に設定します。このパラメータはデフォルトで有効になっており、http および ftp で指定されたリモート ファイルを開くことができます。 allow_url_fopen が off に設定されている場合、リモート ファイルを開くことはできません。
ステップ 2: fopen() 関数を使用してファイルの内容を読み取ります。コンテンツに基づいて必要なリソースを作成し、ローカルに保存します。
ps: php.ini 設定ファイルにおけるファイル操作とディレクトリ操作の拡張メソッドの詳細については、公式 PHP ガイドを参照してください。