現在の位置: ホーム> 最新記事一覧> PHPでStream_Get_Filtersを使用して入力ストリームのフィルターを取得する方法は?

PHPでStream_Get_Filtersを使用して入力ストリームのフィルターを取得する方法は?

gitbox 2025-05-27

PHPでは、 Stream_Get_Filters()は非常に便利な機能であり、現在利用可能なストリームフィルターを表示できます。ストリームフィルターは、圧縮、暗号化、エンコードなど、読み取りまたは書き込みの場合にデータを変換または処理するために使用できます。この記事では、Stream_Get_Filters()を使用してこれらのフィルターを表示し、簡単なアプリケーションの例を示します。

1。フローフィルターとは何ですか?

ストリームフィルターはPHPストリームラッパーの一部であり、データ送信のストリーミング中にデータを動的に処理するために使用されます。たとえば、データをファイルに書き込む前にデータを圧縮するか、ファイルからデータを読み取るときに自動的に解凍できます。

一般的なフィルターは次のとおりです。

  • string.rot13 :rot13文字列のエンコード。

  • string.toupper :文字列を大文字に変換します。

  • String.Tolower :文字列を小文字に変換します。

  • convert.base64-encodeおよびconvert.base64-decode :base64データのエンコードまたはデコード。

2。Stream_Get_Filters ()を使用して、利用可能なフィルターを表示します

Stream_Get_Filters()関数を使用して、現在のPHP環境で利用可能なすべてのストリームフィルターをリストする配列を取得できます。

 <?php
$filters = stream_get_filters();
echo "利用可能なフローフィルター:\n";
print_r($filters);
?>

このコードを実行した後、次のような出力が得られます。

 利用可能なフローフィルター:
Array
(
    [0] => zlib.*
    [1] => string.rot13
    [2] => string.toupper
    [3] => string.tolower
    [4] => convert.*
)

注:さまざまなPHPインストールでは、インストールされている拡張モジュールに応じて、異なるフィルターをリストする場合があります。

3。実用アプリケーション:ファイルライティングにフィルターを使用します

フィルターを使用してファイルコンテンツを大文字に変換する例を示しましょう。

 <?php
$filename = 'output.txt';
$fp = fopen($filename, 'w');

// 書くときは適用します string.toupper フィルター
stream_filter_append($fp, 'string.toupper');

fwrite($fp, "hello, gitbox.net!\n");
fwrite($fp, "this is a test.\n");

fclose($fp);

echo "完全に書く,ファイルを確認してください $filename。\n";
?>

このコードは、 output.txtファイルを作成し、書かれたときにすべての文字を大文字に自動的に変換します。ファイルを開くと、コンテンツは次のとおりです。

 HELLO, GITBOX.NET!
THIS IS A TEST.

4. URLストリームとフィルターを使用して結合します

PHPはローカルファイルストリームを操作するだけでなく、 fopen()を使用してURLストリームを開きます( aopto_url_fopenが許可されている場合)。例えば:

 <?php
$url = 'https://gitbox.net/data.txt';
$fp = fopen($url, 'r');

// 読むときは適用します ROT13 フィルター
stream_filter_append($fp, 'string.rot13');

while (!feof($fp)) {
    echo fgets($fp);
}

fclose($fp);
?>

https://gitbox.net/data.txtのコンテンツが通常のテキストであると仮定すると、このコードはrot13でコンテンツをエンコードし、リアルタイムで出力します。