(上級) PHP でよく使用されるファイル操作関数

黄舟
リリース: 2023-03-05 12:30:02
オリジナル
1221 人が閲覧しました

以下はPHPファイル操作関数です。もちろん、これはほんの一部であり、リストしていないものは他にもたくさんあります。

1. パスを解析します:

1 ファイル名を取得します:

basename();
ファイルへのフルパスを含む文字列を指定すると、この関数はベースファイル名を返します。ファイル名が接尾辞で終わる場合、この部分も削除されます。
例:

$path = "/home/httpd/html/index.php";
$file = basename($path,".php"); // $file is set to "index"
ログイン後にコピー

2 ディレクトリ部分を取得します:
dirname();
この関数は、ファイル名を削除した後のディレクトリ名を返します。
例:

$path = "/etc/passwd";
$file = dirname($path); // $file is set to "/etc"
ログイン後にコピー

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

$pathinfo = pathinfo("www/test/index.html");
var_dump($pathinfo);
// $path['dirname']
$path['basename']
$path['extenssion']
ログイン後にコピー


2. ファイルタイプ
1. filetype();
ファイルのタイプを返します。可能な値は、fifo、char、dir、block、link、file、unknown です。
例:

echo filetype('/etc/passwd'); // file
echo filetype('/etc/');        // dir
ログイン後にコピー

3. 指定されたファイルに関する有用な情報の配列を取得します (非常に便利です)

1. fstat();

開かれたファイル ポインターを通じてファイル情報を取得します
ファイルによって開かれたファイルの統計を取得しますポインターハンドル情報。この関数は stat() 関数に似ていますが、ファイル名ではなく開いているファイル ポインターを操作する点が異なります。
例:

// 打开文件
$fp = fopen("/etc/passwd", "r");
// 取得统计信息
$fstat = fstat($fp);
// 关闭文件
fclose($fp);
// 只显示关联数组部分
print_r(array_slice($fstat, 13));
ログイン後にコピー

2. stat()

filenameで指定されたファイルの統計情報を取得します(fstat()に類似)

4. filesize()

のバイト数を返します。ファイル サイズ (エラー時に FALSE を返し、E_WARNING レベルのエラーを生成する場合)。
例:

// 输出类似:somefile.txt: 1024 bytes
$filename = 'somefile.txt';
echo $filename . ': ' . filesize($filename) . ' bytes';
ログイン後にコピー

2.disk_free_space()

ディレクトリが配置されているディスクパーティションの空き容量(バイト単位)を取得します
eg

// $df 包含根目录下可用的字节数
$df = disk_free_space("/");
//在 Windows 下:
disk_free_space("C:");
disk_free_space("D:");
ログイン後にコピー

3.disk_total_space()

の合計ディスクサイズを返します。ディレクトリ
例: (上記と同じ、関数を置き換えます)

別の: ディレクトリのサイズを計算する必要がある場合は、それを実現するための再帰関数を作成できます


コード

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
            }# end opendir
@closedir($dh);
return $dir_size;
} #end function
ログイン後にコピー

5. アクセスおよび変更時刻

1. fileatime(): 最終アクセス時刻

2. filectime(): 最終変更時刻 (データの変更のみ)


6. ファイル I/O 操作

1. fopen -- ファイルまたは URL を開きます

モードの説明

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


$handle = fopen("/home/rasmus/file.txt", "r");

2. - ファイル全体を配列に読み込みます (この関数は非常に便利です)

file() がファイルを配列として返す点を除いて、file_get_contents() と同じです。配列内の各セルは、改行を含むファイル内の対応する行です。失敗すると、file() は FALSE を返します。

例:



code

$lines = file('http://www.example.com/');
// 在数组中循环,显示 HTML 的源文件并加上行号。
foreach ($lines as $line_num => $line) {
echo "Line #<b>{$line_num}</b> : " . htmlspecialchars($line) . "<br />\n";
}
// 另一个例子将 web 页面读入字符串。参见 file_get_contents()。
$html = implode(&#39;&#39;, file (&#39;http://www.example.com/&#39;));
ログイン後にコピー

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

例:


$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
ログイン後にコピー


4. fgetss -- ファイル ポインタから 1 行を読み取り、HTML タグを除外します

fgets() と同じですが、fgetss は読み取ったテキストから HTML タグと PHP タグを削除しようとします。

オプションの 3 番目のパラメータを使用して、どのタグを削除しないかを指定できます

別の: ディレクトリに対する操作:

1. opendir -- ディレクトリ ハンドルを開き、以降の処理に使用できるディレクトリ ハンドルを開きます。 Closedir() 、 readdir() および rewinddir() 呼び出し内。

2. readdir -- ディレクトリ ハンドルからエントリを読み取り、ディレクトリ内の次のファイルのファイル名を返します。ファイル名はファイル システム内の順序で返されます。
例:


Code

// 注意在 4.0.0-RC2 之前不存在 !== 运算符
if ($handle = opendir(&#39;/path/to/files&#39;)) {
echo "Directory handle: $handle\n";
echo "Files:\n";
  
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
   
while ($file = readdir($handle)) {
echo "$file\n";
}
     closedir($handle);
}
ログイン後にコピー

3. scandir -- 指定されたパス内のファイルとディレクトリをリストし (非常に便利)、ディレクトリ内のファイルとディレクトリを含む配列を返します。

デフォルトの並べ替え順序はアルファベット昇順です。オプションのパラメータsorting_orderが使用される(1に設定される)場合、並べ替え順序はアルファベットの降順になります。

例:

りー

另外注:

七、 对文件属性的操作(操作系统环境不同,可能有所不一样,这点要注意)

1文件是否可读:

       boolis_readable ( string filename )
ログイン後にコピー

如果由 filename 指定的文件或目录存在并且可读则返回 TRUE。

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制。

2 文件是否可写

         bool is_writable ( string filename )
ログイン後にコピー

如果文件存在并且可写则返回 TRUE。filename 参数可以是一个允许进行是否可写检查的目录名。

记住 PHP 也许只能以运行 webserver 的用户名(通常为 'nobody')来访问文件。不计入安全模式的限制

3 检查文件是否存在

    boolfile_exists ( string filename )
ログイン後にコピー

      如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE


以上就是(进阶篇) PHP常用的文件操作函数的内容,更多相关内容请关注PHP中文网(www.php.cn)!


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート