ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルでよく使用されるファイル操作関数の古典的なコレクション

PHP_PHP チュートリアルでよく使用されるファイル操作関数の古典的なコレクション

WBOY
リリース: 2016-07-21 15:12:29
オリジナル
975 人が閲覧しました

以下はPHPのファイル操作機能について個人的にまとめたものです。もちろん、これはほんの一部であり、リストしていないものは他にもたくさんあります。
1. パスを解析します:
1 ファイル名を取得します:
basename();
ファイルへの完全なパスを含む文字列を指定すると、この関数はベース ファイル名を返します。ファイル名が接尾辞で終わる場合、この部分も削除されます。
例:

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

$path = "/home/httpd/html/index.php"
$file =basename($path,".php"; ); // $file は "index" に設定されます

2 ディレクトリ部分を取得します:
dirname();
ファイルへのフルパスを含む文字列を指定すると、この関数はファイル名を削除した後のディレクトリ名を返します。
例:
コードをコピーします コードは次のとおりです:

$path = "/etc/passwd";
$file = dirname($path); // $file は "/ に設定されます。 etc"

3 パス連想配列を取得します
pathinfo();
指定されたパスの 3 つの部分 (ディレクトリ名、ベース名、拡張子) を取得します。
例:
コードをコピーします コードは次のとおりです:

$pathinfo = pathinfo("www/test/index.html")
var_dump($pathinfo);
// $path[ 'dirname']
$path['basename']


2. ファイルの種類 1. ファイルの種類を返します。可能な値は、fifo、char、dir、block、link、file、unknown です。
例:


コードをコピーします コードは次のとおりです:
echo filetype('/etc/passwd') // file
echo filetype('/etc/'); // dir


三、指定されたファイルに関する有用な情報の配列を取得します (非常に便利です)
1. fstat(); 開かれたファイル ポインターを通じてファイル情報を取得します
ファイル ポインター ハンドルによって開かれたファイルに関する統計情報を取得します。この関数は stat() 関数に似ていますが、ファイル名ではなく開いているファイル ポインターを操作する点が異なります。
例:


コードをコピーします コードは次のとおりです:
//ファイルを開きます
$fp = fopen("/etc/passwd", "r");
//統計情報を取得します。
$fstat = fstat ($fp);
// ファイルを閉じる
fclose($fp);
// 連想配列部分のみを表示

stat ()
ファイル名で指定されたファイル統計を取得します (fstat() に似ています)
4. サイズを計算します
1. filesize()
エラーが発生した場合は、FALSE を返します。 E_WARNING レベルのエラー。
例:

コードをコピーします

コードは次のとおりです:
// 出力は次のようになります: somefile.txt: 1024 バイト $filename = 'somefile.txt' echo $filename ': ' . filesize($ filename) . ' bytes';
2. disk_free_space()
ディレクトリが存在するディスク パーティションの空き容量 (バイト単位) を取得します

[code]
// $df には数値が含まれますルートディレクトリで利用可能なバイト数
$df = disc_free_space("/");
//Windows の場合:
disk_free_space("D:");


3.
ディレクトリの合計ディスク サイズを返します
例: (上記と同じ、関数を置き換えます)
別: ディレクトリのサイズを計算する必要がある場合、それを実現する再帰関数を作成できます
コード



コードをコピーします

コードは次のとおりです:
function dir_size($dir){ $dir_size = 0; if($dh = @opendir($dir)){ while(($filename = readdir( $dh)) != false){
if($filename !='.' and $filename !='..'){
if(is_file($dir.'/'.$filename)){
$dir_size +=filesize($dir.'/'.$filename);
}else if(is_dir( $dir.'/'.$filename)){
$dir_size +=dir_size($dir.'/'.$filename );
}
}
}#end while
}# opendir を終了
@closedir($dh );
return $dir_size
;
5. アクセスと変更時間 1. fileatime(): 最終アクセス時間
2. filectime(): 最終変更時間 (コンテンツのみを参照)修正)

6. ファイル I/O 操作
1. fopen -- ファイルまたは URL を開きます mode 説明
'r' 読み取り専用モードで開き、ファイル ポインターをファイル ヘッダーにポイントします。
'r+' 読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントします。
'w' は書き込みモードをオンにし、ファイル ポインタをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
「w+」は読み取り/書き込みモードで開き、ファイル ポインターをファイル ヘッダーにポイントし、ファイル サイズをゼロに切り捨てます。ファイルが存在しない場合は、作成してみてください。
'a' は書き込みモードで開き、ファイル ポインタがファイルの末尾を指します。ファイルが存在しない場合は、作成してみてください。
「a+」は読み取り/書き込みモードで開き、ファイル ポインタがファイルの末尾を指します。ファイルが存在しない場合は、作成してみてください。
「x」はファイルを作成して書き込み用に開き、ファイルポインターをファイルヘッダーに指します。ファイルが既に存在する場合、fopen() 呼び出しは失敗して FALSE を返します。
'x+' が作成され、読み取りと書き込みのために開かれ、ファイル ポインターがファイル ヘッダーを指します。ファイルが既に存在する場合、fopen() 呼び出しは失敗し、FALSE を返します
例:


コードをコピーします コードは次のとおりです:
$handle = fopen("/home/rasmus/file.txt ", "r" );


2. file -- ファイル全体を配列に読み込みます (この関数は非常に便利です)
file() がファイルを配列として返す点を除いて、file_get_contents() と同じです。配列内の各セルは、改行を含むファイル内の対応する行です。失敗すると、file() は FALSE を返します。
例:
Code


コードをコピー コードは次のとおりです:
$lines = file('http://www.example.com/')
// 配列をループして表示します。 HTML ファイルのソースに行番号を追加します。
foreach ($lines as $line_num => $line) {
echo "Line #{$line_num} : " . htmlspecialchars($line) "
n ";
}
// Web ページを文字列に読み取る別の例。 file_get_contents() を参照してください。
$html = implode('', file ('http://www.example.com/'));


3. fgets -- ファイル ポインターから行を読み取ります
ハンドルが指すファイルから読み取ります1 行で、最大長 - 1 バイトの文字列を返します。改行文字 (戻り値に含まれる)、EOF、または長さ - 1 バイト (いずれか最初に発生した方) が読み取られたときに停止します。長さが指定されていない場合、デフォルトは 1K、つまり 1024 バイトになります。
例:


コードをコピーします コードは次のとおりです:
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof( $handle)) {
$buffer = fgets($handle, 4096);
echo $buffer
}


4.ファイルポインタとフィルタ HTML タグの除去
fgets() と同じですが、 fgetss は読み取ったテキストから HTML タグと PHP タグを除去しようとします。
オプションの 3 番目のパラメータを使用して、削除しないタグを指定できます。
もう 1 つ: ディレクトリに対する操作:
1. opendir - ディレクトリ ハンドルを開き、後続の Closedir() で使用できます。 readdir() および rewinddir() 呼び出し。
2. readdir -- ディレクトリ ハンドルからエントリを読み取り、ディレクトリ内の次のファイルのファイル名を返します。ファイル名はファイル システム内の順序で返されます。
例:
Code



コードをコピー
コードは次のとおりです: // !== 演算子は 4.0.0-RC2if ($handle = opendir('/ path/to/ files')) {
echo "ディレクトリ ハンドル: $handlen";
echo "ファイル:n";
while (false !== ($file = readdir($handle))) {
echo "$ filen";
}
while ($file = readdir($handle)) {
echo "$filen";
}
closedir($handle);
}
[code]
3. scandir -- ファイルをリストします。指定されたパスとディレクトリ (非常に便利) は、ディレクトリ内のファイルとディレクトリを含む配列を返します。
デフォルトの並べ替え順序はアルファベット昇順です。オプションのパラメータsorting_orderが使用される(1に設定される)場合、並べ替え順序はアルファベットの降順になります。
例:
[コード]
$dir = '/tmp';
$files2 = scandir($files1); );
追記:
7. ファイル属性の操作(OSの環境が異なる場合がありますので注意してください)
1 ファイルが読み取り可能かどうか:
boolis_readable (文字列ファイル名)
ファイル名で指定された場合はTRUEを返します。ファイルまたはディレクトリが存在し、読み取り可能であるかどうか。
PHP は、Web サーバーを実行しているユーザー名 (通常は「nobody」) でのみファイルにアクセスできる場合があることに注意してください。セーフ モードの制限にはカウントされません。
2 ファイルが書き込み可能かどうか
bool is_writable ( string filename )
ファイルが存在し、書き込み可能であれば TRUE を返します。 filename パラメータには、書き込み可能性のチェックを可能にするディレクトリ名を指定できます。
PHP は、Web サーバーを実行しているユーザー名 (通常は「nobody」) でのみファイルにアクセスできる場合があることに注意してください。セーフ モードの制限にはカウントされません
3 ファイルが存在するかどうかを確認します
boolfile_exists ( string filename )
filename で指定されたファイルまたはディレクトリが存在する場合は TRUE を返し、それ以外の場合は FALSE を返します
============== ========================PHP ファイル操作クラス====================== == ===================
コードをコピー コードは次のとおりです:

/*************************************************** * **************************************
ファイル名:File.cls.php
ファイル紹介: clsFile クラス定義、ファイル操作のカプセル化
バージョン: 2.0 最終更新日: 2011-8-23
*************************** *********************************************** **** **********/
!define('INIT_PHPV') && die('直接スクリプトアクセスは許可されません');
class clsFile
{
private $fileName_str;ファイル
private $fileOpenMethod_str; //ファイルを開くモード
function __construct($fileName_str='',$fileOpenMethod_str='readOnly')//パス、デフォルトは空のモードです
​​{
/ /Constructor 関数、データメンバーの初期化を完了します
$this->fileName_str=$fileName_str;
}
function __destruct()
{
//Destructor
}
public function __get($ valName_val)//取得するデータメンバーの名前
{
//指定された名前のデータメンバーの値を取得する特別な関数
return $this->$valName_val
}
private function; on_error($errMsg_str='不明なエラー!' ,$errNo_int=0)//エラーメッセージ、エラーコード
{
echo 'プログラムエラー:'.$errMsg_str.'エラーコード:'.$errNo_int;//エラー処理関数
}
public function open()
{
//対応するファイルを開き、ファイルリソース識別を返す
//fileOpenMethod_str に従って開く方法を選択する
switch($this->fileOpenMethod_str)
{
case 'readOnly' :
$openMethod_str='r'; //読み取り専用、ポインタはファイルヘッダを指します
break;
case 'readWrite':
$openMethod_str='r+'; //読み取りおよび書き込み、ポインタはファイルヘッダを指しますfile header
break;
case 'writeAndInit':
$openMethod_str='w'; //書き込みのみ、ポインターはファイル ヘッダーを指し、ファイル ヘッダーが存在しない場合は作成します。
case 'readWriteAndInit':
$openMethod_str='r+'; //読み取りと書き込み、ポインターはファイル ヘッダーを指し、ファイルが存在しない場合は作成されます。
case 'writeAndAdd':
$openMethod_str='a'; //書き込みのみ、ポインタはファイルの末尾を指し、存在しない場合は
break;
case 'readWriteAndAdd':
$openMethod_str=' a+'; //読み取りと書き込み、ポインターはファイルの末尾を指します。ファイルが存在しない場合は作成します
default:
$this->on_error('Open メソッド エラー!',310) ;//エラー処理
exit;
// ファイルを開きます
if(!$fp_res=fopen($this->fileName_str,$openMethod_str))
{
$this->on_error('Can'tファイルを開きます!',301);//エラー処理
exit;
}
return $fp_res;
}
public function close($fp_res)//open によって返されたリソース ID
{
// 開いたファイルを閉じます
if(!fclose($fp_res))
{
$this->on_error('ファイルを閉じることができません!',302);//エラー処理
exit;
}
}
public function write()/ /$fp_res,$data_str,$length_int: ファイルリソース ID、書き込み文字列、長さ制御
{
//文字列 string_str をファイル fp_res に書き込み、書き込み長さを制御 length_int
//パラメータの数を判断、関連関数を呼び出す
$ argNum_int=func_num_args();/ /パラメータの数
$fp_res=func_get_arg(0); //ファイルリソースの識別
$data_str=func_get_arg(1); //書かれた文字列
if($argNum_int==3)
{ $length_int=func_get_arg (2); //長さ制御
if(!fwrite($fp_res,$data_str,$length_int))
{
$this->on_error('ファイルを書き込めません!',303) ;//エラー処理
exit
}
}
else
{
if(!fwrite($fp_res,$data_str))
{
$this->on_error('ファイルを書き込めません!',303 );// エラー処理
exit;
}
}
}
public function read_line()//$fp_res,$length_int: ファイルリソース識別子、読み取り長
{
//ファイル fp_res から文字列を 1 行読み取ります。長さを制御できます
//パラメータの数を決定します
$argNum_int=func_num_args();
if($argNum_int==2)
{
$length_int=func_get_arg(1);
if($string_str=! fgets($fp_res,$length_int))
{
$this->on_error('ファイルを読み取れません!',304);//エラー処理
終了}
return; $string_str;
}
else
{
if(!$string_str=fgets($fp_res))
{
$this->on_error('ファイルを読み取れません!',304);//エラー処理
exit;
}
return $ string_str;
}
}
public function read($fp_res,$length_int)//ファイルリソース識別、長さ制御
{
//ファイル fp_res を読み込み、最長は length_int です
if(!$ string_str=fread($fp_res ,$length_int))
{
$this->on_error('ファイルを読み取れません!',305);//エラー処理
終了
return $string_str;
public function is_exists($ fileName_str)//ファイル名
{
//ファイル $fileName_str が存在するかどうかを確認し、存在する場合は true を返し、存在しない場合は false を返します
return file_exists($fileName_str)
}
/* *****************ファイルサイズの取得*************************/
/*
ファイルのサイズを取得します fileName_str
$fileName_str はファイルのパスと名前です
ファイル サイズの値を返します
*/
public function get_file_size($fileName_str)//File名前
{
ファイルサイズを返す($fileName_str);
/*******************変換ファイルサイズの表記方法*************************/
/*
$fileSize_int ファイルのサイズ (バイト単位)
変換されたファイル サイズを測定単位で返します
*/
public functionchange_size_express($fileSize_int)//ファイル名
{
if ($fileSize_int>1024)
{
$fileSizeNew_int=$fileSize_int/1024;//K に変換
$unit_str='KB';
if($fileSizeNew_int>1024)
{
$fileSizeNew_int=$fileSizeNew_int/ 1024 ;/ /M に変換
$unit_str='MB';
}
$fileSizeNew_arr=explode('.',$fileSizeNew_int);
$fileSizeNew_str=$fileSizeNew_arr[0].'.'.substr($fileSizeNew_arr[1 ], 0,2).$unit_str;
}
return $fileSizeNew_str;
/******************ファイルの名前を変更*************************/
/*
oldname_str で指定されたファイルの名前を newname_str に変更します
$oldName_str はファイルの元の名前です
$ newName_str はファイルの新しい名前です
エラーメッセージを返します
*/
public function rename_file($oldName_str,$newName_str)
{
if(!rename($oldName_str,$newName_str))
{
$this->on_error ( 'ファイル名を変更できません!',308);
exit
}
}
/******************ファイルの削除*********************/
/*
filename_str で指定されたファイルを削除します
$fileName_str削除される可能性があります
Return エラーメッセージ
*/
public function delete_file($fileName_str)//
{
if(!unlink($fileName_str))
{
$this->on_error('ファイルを削除できません!', 309);/ /エラー処理
exit;
}
}
/*******************ファイルの拡張子を取得**************************/
/*
filename_str で指定されたファイルの拡張子を取得します
$fileName_str はファイル パスとタイプの名前を受け取ります
Returnファイルの拡張子
* /
public function get_file_type($fileName_str)
{
$fileNamePart_arr=explode('.',$fileName_str);
while(list(,$fileType_str)=each($fileNamePart_arr))
{
$type_str=$fileType_str;
}
return $type_str;
}
/*******************ファイルが指定されたファイル タイプであるかどうかを確認します*************************/
/*
$fileType_str で指定されたファイルの種類
$fileName_str 取得されるファイルのパスと名前
false または true を返します
*/
public function is_the_type ($ FILENAME_STR, $ Filetype_arr) {
$ Cheakfiletype_Str = $ This- & GT;
{
return false;
else {{
return true;
}
}
/********************ファイルをアップロードし、アップロードされたファイル情報を返します************************ **/
/*
$fileName_str ローカル ファイル名
$filePath $filePath が str の場合、アップロードされるファイルのパス。新規 ファイル名に -1、2、3.. を追加します。
$allowType_arr はアップロードできるファイルの種類です。制限はありません。
$maxSize_int 許可されるファイルの最大値。空白のままにすると、制限はありません。
戻り値は、新しいファイル情報の 2 次元配列です。
*/
public function Upload_file($) fileName_str,$filePath,$allowType_arr='',$maxSize_int='')
{
$fileName_arr=$_FILES[$fileName_str][' name'] // ファイルの名前
$fileTempName_arr=$_FILES[$] fileName_str]['tmp_name']; //ファイルのキャッシュファイル
$fileSize_arr=$_FILES[$fileName_str]['size'];//ファイルサイズを取得
$reFileInfo_arr=array(); ($fileName_arr)-1;
for($i=0;$i{
if($fileName_arr[$i ]!='')
{
if($allowType_arr!= '' および !$this->is_the_type($fileName_arr[$i],$allowType_arr))//許可されたファイル タイプであるかどうかを判断します
{
$ this->on_error('ファイルは許可されたタイプではありません! ',310);//エラー処理
break;
}
if($maxSize_int!='' and $fileSize_arr[$i]>$maxSize_int)
{
$this->on_error('ファイルが多すぎますbig!',311);//エラー処理
break;
$j=$i+1;
$fileType_str=$this->get_file_type( $fileName_arr[$i]);// ファイル タイプを取得します
if(!is_array($filePath))
{
$fileNewName_str=$filePath.'-'.($j).'.'.$fileType_str;
}
else
{
$fileNewName_str=$filePath_arr[$i] ].'.'.$fileType_str;
}
copy($fileTempName_arr[$i],$fileNewName_str);//ファイルをアップロード
unlink($fileTempName_arr[$i ]);//キャッシュされたファイルを削除
//-- -------------ストレージファイル情報---------------/ /
$doFile_arr=explode( '/',$fileNewName_str);
$doFile_num_int=count($doFile_arr)-1;
$reFileInfo_arr[$j]['name']=$doFile_arr [$j]['type ']=$fileType_str;
$reFileInfo_arr[$j]['size']=$this->change_size_express($fileSize_arr[$i]);
}
}
$reFileInfo_arr; #&*/
}


お役に立てば幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/326690.html技術記事以下はPHPのファイル操作機能について個人的にまとめたものです。もちろん、これはほんの一部であり、リストしていないものは他にもたくさんあります。 1. パスを解析します: 1 ファイル名を取得します:basename(); を含むファイルを与えます...
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート