Filtering Streams

Use filters to modify the contents of a stream. They allow you to pre- and postprocess data without altering the original. Stream filters are like output buffer handlers only better, because they’re more flexible and efficient.

Unlike the output buffer handler, which is best suited for information that’s either being printed out or stored in a variable, you can use a filter wherever you can use a stream. This makes it possible to filter, for example, data going to a file. With an output buffer you’d need to store the entire dataset in a buffer, capture it to a variable, and then send it to the file.

You can filter input data as well as output data. PHP’s output buffering only works on output data. A filter lets you automatically encode all HTML entities from a user’s input, for example.

PHP comes with a few built-in filters, but you can also create your own. The built-in filters are:

string.rot13

Performs rot13 encoding

string.toupper

Turns all characters to uppercase

string.tolower

Turns all characters to lowercase

string.strip_tags

Eliminates HTML tags

convert.iconv.*

Alters the character set using iconv

Use stream_get_filters( ) to determine which filters are available. It works just like stream_get_wrappers( ).

Filters observe an unofficial namespace convention. For instance, string filters begin with string. and conversion filters begin with convert..

To use a filter with a stream, you must associate the two using stream_filter_prepend( ) or stream_filter_append( ...

Get Upgrading to PHP 5 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.