/lib/horde/framework/Horde/Stream/Filter/Htmlspecialchars.php
PHP | 40 lines | 13 code | 1 blank | 26 comment | 1 complexity | 346e4d074931553c9613bf3362955844 MD5 | raw file
Possible License(s): MIT, AGPL-3.0, MPL-2.0-no-copyleft-exception, LGPL-3.0, GPL-3.0, Apache-2.0, LGPL-2.1, BSD-3-Clause
- <?php
- /**
- * Stream filter class to pass data to htmlspecialchars() in chunks.
- *
- * WARNING: This filter is not safe on multi-byte character sets, because
- * multi-byte characters might be split on chunk boundaries. This filter should
- * be considered a duct tape if the data passed to htmlspecialchars() is too
- * big for PHP's memory_limit.
- *
- * Usage:
- * stream_filter_register('htmlspecialchars', 'Horde_Stream_Filter_Htmlspecialchars');
- * stream_filter_[app|pre]pend($stream, 'htmlspecialchars',
- * [ STREAM_FILTER_[READ|WRITE|ALL] ]);
- *
- * Copyright 2012-2017 Horde LLC (http://www.horde.org/)
- *
- * See the enclosed file LICENSE for license information (LGPL). If you
- * did not receive this file, see http://www.horde.org/licenses/lgpl21.
- *
- * @author Jan Schneider <jan@horde.org>
- * @category Horde
- * @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
- * @package Stream_Filter
- */
- class Horde_Stream_Filter_Htmlspecialchars extends php_user_filter
- {
- /**
- * @see stream_filter_register()
- */
- public function filter($in, $out, &$consumed, $closing)
- {
- while ($bucket = stream_bucket_make_writeable($in)) {
- $bucket->data = htmlspecialchars($bucket->data);
- $consumed += $bucket->datalen;
- stream_bucket_append($out, $bucket);
- }
- return PSFS_PASS_ON;
- }
- }