|
stream_filter_append
Attach a filter to a stream
(PHP 4 >= 4.3.0, PHP 5)
Example 2374. Controlling where filters are applied<?php Related Examples ( Source code ) » stream_filter_append Examples ( Source code ) » stream_filter_append Code Examples / Notes » stream_filter_appendnet_navard
Hello firends The difference betweem adding a stream filter first or last in the filte list in only the order they will be applied to streams. For example, if you're reading data from a file, and a given filter is placed in first place with stream_filter_prepend()the data will be processed by that filter first. This example reads out file data and the filter is applied at the beginning of the reading operation: <?php /* Open a test file for reading */ $fp = fopen("test.txt", "r"); /* Apply the ROT13 filter to the * read filter chain, but not the * write filter chain */ stream_filter_prepend($fp, "string.rot13", STREAM_FILTER_READ); // read file data $contents=fread($fp,1024); // file data is first filtered and stored in $contents echo $contents; fclose($fp); ?> On the other hand, if stream_filter_append() is used, then the filter will be applied at the end of the data operation. The thing about this is only the order filters are applied to streams. Back to the example, it's not the same thing removing new lines from file data and then counting the number of characters, than performing the inverse process. In this case, the order that filters are applied to stream is important. This example writes a test string to a file. The filter is applied at the end of the writing operation: <?php /* Open a test file for writing */ $fp = fopen("test.txt", "w+"); /* Apply the ROT13 filter to the * write filter chain, but not the * read filter chain */ stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE); /* Write a simple string to the file * it will be ROT13 transformed at the end of the stream operation * way out */ fwrite($fp, "This is a test\n"); // string data is first written, then ROT13 tranformed and lastly written to file /* Back up to the beginning of the file */ rewind($fp); $contents=fread($fp,512); fclose($fp); echo $contents; ?> In the first case, data is transformed at the end of the writing operation, while in the second one, data is first filtered and then stored in $contents. With Regards Hossein |
Change Languagestream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend stream_context_create stream_context_get_default stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_encoding stream_filter_append stream_filter_prepend stream_filter_register stream_filter_remove stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_resolve_include_path stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_enable_crypto stream_socket_get_name stream_socket_pair stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_socket_shutdown stream_wrapper_register stream_wrapper_restore stream_wrapper_unregister |