ホームページ バックエンド開発 PHPチュートリアル PHP開発ノートシリーズ(4)-ファイル操作

PHP開発ノートシリーズ(4)-ファイル操作

Jun 13, 2016 pm 01:25 PM
echo file localhost php

PHP開発ノートシリーズ(4)-ファイル操作

??? 一般的な Web アプリケーションでは、データはデータベース テーブルに保存されますが、ファイルの読み取りや書き込みなどのファイル操作も必要です。典型的なアプリケーション シナリオは、システムの起動時の試験登録です。 , 「登録説明書」の内容は自動的にメモリに読み込まれ、必要に応じてページ上に表示されます。今回の記事は「PHP開発ノートシリーズ(4) - ファイル操作」 PHP でのファイル操作を検討します。

?

1. ファイルを配列 (ファイル) に読み込みます

??? file() 関数はファイルを 1 行ずつ文字列配列に読み取ることができ、後続のプログラムはこの文字列配列を走査することでファイルを処理できます。

file:file.php
url:http://localhost:88/file/file.php
<?php
    $file = file(basename(__FILE__));
    $lines = count($file);

    for($i=0; $i<$lines; $i++){
        $color = ($i%2==0) ? 'red' : 'white';
        echo '<div style="background-color: '.$color.'">';
        echo $i.':'.htmlspecialchars($file[$i]);
        echo '</div>';
    }
?>
ログイン後にコピー
?

2. ファイルを文字列に読み取ります (file_get_contents)
??? file_get_contents() 関数は、ファイルのすべての内容を文字列変数に読み取ることができ、この文字列の内容をページに表示したり、新しいファイルに書き込んだりできます。

file:file_get_contents.php
url:http://localhost:88/file/readfile.php
<?php
    $file = file_get_contents('file.html');
      
    $file = strip_tags($file);
   
    echo '<form><textarea rows=12 cols=80>'.htmlspecialchars($file).'</textarea></form>';
?>
ログイン後にコピー
?


3. ファイルを画面に読み込みます (readfile)
??? readfile() 関数は、ファイルの内容を直接読み取り、それを画面にエコーします。この関数は、アップロードまたはダウンロード時にも使用されます。

file:readfile.php
url:http://localhost:88/file/readfile.php
<?php
    readfile('file.html');
?>
ログイン後にコピー

?


??? 上記のメソッドは、ファイルの内容全体を読み取るか、改行文字に従って、それを配列、文字列、または画面に読み取ることしかできません。その後、ファイルの内容をより柔軟に読み書きする必要がある場合は、次のようにする必要があります。ファイルハンドルは、C 言語のファイルの読み取りおよび書き込み関数に似ています。


4. ファイルの内容全体 (fread、ファイルサイズ) を一度に読み取ります
??? ファイル サイズが比較的小さいファイルの場合は、ファイル全体の内容を一度にメモリに読み込むことができます。手順は、1) fopen が新しいファイルを開き、使用モードを指定する、2) fread を使用して指定された長さに応じてファイルの内容を読み取る、3) fclose がハンドルを閉じる、です。

file:fread.php
url:http://localhost:88/file/fread.php
<?php
    $location = 'file.html';
    $file = fopen($location, "rb");
    $fileContent = fread($file, filesize($location));
    fclose($file);
    echo $fileContent;
?>
ログイン後にコピー
?


5. ファイル全体の内容をバッチで読み取ります (fgets、feof)

??? fgets 関数はファイルの内容をスライス単位で取得でき、feof はファイルが最後まで読み込まれたかどうかを判断します。

file:fgets.php
url:http://localhost:88/file/fgets.php
<?php
    $location = 'file.html';
    $fp = fopen($location, 'rb');
   
    while(!feof($fp)){
        $chunk = fgets($fp);
        echo $chunk;
    }
   
    fclose($fp);
?>
ログイン後にコピー
?


6. 1 回読み取り (file_get_contents)、1 回書き込み (file_put_contents)
??? 小さなファイルの読み取りと書き込みの場合、ファイル ハンドルを作成せずに file_get_contents() メソッドと file_put_contents() メソッドを使用すると便利です。

file:readOnce_writeOnce.php
url:http://localhost:88/file/readOnce_writeOnce.php
<?php
    $source = 'file.html';
    $destination1 = 'readOnce_writeOnce.html';

    // 一次读取,一次写入
    $sourceContent = file_get_contents($source);
    file_put_contents($destination1, $sourceContent);
?>
ログイン後にコピー

?


7. 別々の行で読み取り、別々の行で書き込みます (fwrite)
???大きなファイルの読み書きの場合、内容を一度に読み込むとメモリオーバーフローやWebサーバーのクラッシュが発生する可能性があるため、1行ずつ読み書きする必要があります。 file() 行番号を使用してソース ファイルを文字列配列に読み取り、fwrite を使用してターゲット ファイルを 1 行ずつ書き込むことができます。もちろん、ハンドルを開くには fopen を使用し、ハンドルを閉じるには fclose を使用する必要があります。書いた後。

file:multiRead_multiWrite.php
url:http://localhost:88/file/multiRead_multiWrite.php
<?php
    $source = 'file.html';
    $destination2 = 'multiRead_multiWrite.html';
   
    $lines = file($source);
    $fp = fopen($destination2, 'w');
   
    foreach ($lines as $line) {
        fwrite($fp, $line);
    }
   
    fclose($fp);
?>
ログイン後にコピー
?

8. その他のファイル処理機能

file:other.php
url:http://localhost:88/file/other.php
<?php
    $fileName = basename(__FILE__);
    $dirPath = './';
   
    // file_exists()返回1 或 0
    echo $fileName.': '.file_exists($fileName).'<br/>';
   
    // is_file()返回1 或 0
    echo $fileName.' is '.is_file($fileName)?'file':'directory'.'!'.'<br/>';
   
    // is_readable()返回1 或 0
    echo $fileName.' readable:'.is_readable($fileName).'<br/>';
   
    // is_writable()返回1 或 0
    echo $fileName.' writable:'.is_writable($fileName).'<br/>';
   
    echo $fileName.' created at:'.filemtime($fileName).'<br/>';
    echo $fileName.' created at:'.fileatime($fileName).'<br/>';
    echo $fileName.' size:'.filesize($fileName).'<br/>';
?> 
ログイン後にコピー

?

?

9. ディレクトリの読み取り (opendire、readdir、closedir)

??? 最初の方法は、ファイルの fopen、fread、および fclose と同様に、opendir、readdir、および Closedir 関数を使用してディレクトリを開き、読み取り、閉じます。以下:

file:dir.php
url:http://localhost:88/file/dir.php
<?php
    $location = './';
    
    $dp = opendir($location);
    
    while ($entry = readdir($dp)){
        if(is_dir($entry))
        {
            echo '[DIR] '.$entry. '<br/>';
        }elseif (is_file($entry))
        {
            echo '[FILE] '.$entry. '<br/>';
        }
    }
    closedir($dp);

?>
ログイン後にコピー

?

??? 2 番目の方法は、PHP が提供するオブジェクト指向の dir クラスを使用して、ディレクトリ パスを渡して dir インスタンスを構築し、インスタンスの read メソッドを通じてディレクトリを読み取ります。コードは次のとおりです:

file:dir-class.php
url:http://localhost:88/file/dir-class.php
<?php
    $location = './';
    
    $dir = dir($location);
    
     while ($entry = $dir->read()){
        if(is_dir($entry))
        {
            echo '[DIR] '.$entry. '<br/>';
        }elseif (is_file($entry))
        {
            echo '[FILE] '.$entry. '<br/>';
        }
    }
    closedir($dp);
?>
ログイン後にコピー
?

10. ファイルコピー(コピー)

file:copy.php
url:http://localhost:88/file/copy.php
<?php
    $source = 'file.html';
    $dest = 'file-copy.html';
    copy($source, $dest);
?>
ログイン後にコピー

?

?

11. ファイルの移動と名前変更

<?php
    $source = 'file-copy.html';
    $dest = 'file-copy-1.html';
    rename($source, $dest);
?>
ログイン後にコピー

?

???この記事のアドレス: http://ryan-d.iteye.com/blog/1543374

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles