Content · Web Development · PHP

PHP stream_filter_register() Function: Usage and Examples

Registers a custom user-defined stream filter class under a filter name.

1 views Published Oct 17, 2026 Updated Oct 17, 2026 admin

In PHP, stream_filter_register() is useful when your application needs a specific operation rather than manually reproducing it. Registers a custom user-defined stream filter class under a filter name.

Stream functions work with PHP stream resources, wrappers, contexts or custom filters. Not every wrapper supports every operation.

What Is stream_filter_register() in PHP?


Registers a custom user-defined stream filter class under a filter name.

Signature:

stream_filter_register(string $filter_name, string $class): bool

Parameters:

  • $filter_name — Registered stream filter name.
  • $class — Class name used for returned file-information objects or stream wrappers.

Return value: bool.

Example 1: Basic Usage


This first example shows the method or function in a minimal context. For environment-dependent operations, adapt the required path, stream or connection before running it.

<?php

class UppercaseFilter extends php_user_filter {
    public function filter($input, $output, &$consumed, bool $closing): int {
        while ($bucket = stream_bucket_make_writeable($input)) {
            $consumed += $bucket->datalen;
            $bucket->data = strtoupper($bucket->data);
            stream_bucket_append($output, $bucket);
        }
        return PSFS_PASS_ON;
    }
}
stream_filter_register("demo.upper", UppercaseFilter::class);
$stream = fopen("php://temp", "w+");
stream_filter_append($stream, "demo.upper", STREAM_FILTER_WRITE);
fwrite($stream, "hello");
fclose($stream);

The important operation is stream_filter_register(). Registers a custom user-defined stream filter class under a filter name.

Example 2: Another Input or Scenario


The next example changes the input or surrounding context to show how the operation behaves in a second situation.

<?php

class UppercaseFilter extends php_user_filter {
    public function filter($input, $output, &$consumed, bool $closing): int {
        while ($bucket = stream_bucket_make_writeable($input)) {
            $consumed += $bucket->datalen;
            $bucket->data = strtoupper($bucket->data);
            stream_bucket_append($output, $bucket);
        }
        return PSFS_PASS_ON;
    }
}
var_dump(stream_filter_register("demo.upper", UppercaseFilter::class));

Compare the inputs and the handling of the return value with the first example. Avoid assuming that filesystem paths, resource states or binary bytes are interchangeable.

Practical Example: Applying the Operation


This example illustrates how the operation fits into a small application workflow. Paths, streams and secrets must be created or provided securely by the calling application.

<?php

class UppercaseFilter extends php_user_filter {
    public function filter($input, $output, &$consumed, bool $closing): int {
        while ($bucket = stream_bucket_make_writeable($input)) {
            $consumed += $bucket->datalen;
            $bucket->data = strtoupper($bucket->data);
            stream_bucket_append($output, $bucket);
        }
        return PSFS_PASS_ON;
    }
}
if (!in_array("demo.upper", stream_get_filters(), true)) { stream_filter_register("demo.upper", UppercaseFilter::class); }

Practical note: Registers a custom user-defined stream filter class under a filter name.

Important Behavior and Edge Cases


  • Registers a custom user-defined stream filter class under a filter name.
  • Check failure values and exceptions; do not assume every environment supports the same stream wrapper, extension or filesystem capability.
  • When handling paths, streams or external input, validate inputs before using results and release resources after use.

Comparison With Related Functions


Function or MethodBehavior
stream_filter_register()registers a filter class by name.
stream_filter_append()attaches an existing named filter to a stream.

Common Beginner Mistakes


MistakeCorrect Approach
Assuming stream_filter_register() can be used without its required setupProvide the correct file, stream, state, key or object before calling it; Registers a custom user-defined stream filter class under a filter name.
Using bucket operations outside a filter callbackStream bucket APIs are intended for php_user_filter subclasses and their provided brigades.
Forgetting consumed byte counts or filter orderAccount for consumed data and test read/write filter ordering before deployment.

Key Takeaways


  • stream_filter_register() registers a custom user-defined stream filter class under a filter name.
  • Use appropriate input types and verify results before continuing.
  • Prefer specialized, safer APIs when the operation concerns untrusted input, encryption or network traffic.

In summary: Registers a custom user-defined stream filter class under a filter name. Build in error handling and use this function where its specific behavior matches the application requirements.

Share this resourceSend this page to someone who may find it useful.