/libraries/joomla/filter/filteroutput.php
https://github.com/MaBelleEcole/Main · PHP · 148 lines · 65 code · 11 blank · 72 comment · 13 complexity · 7758814ecf9145539af41f6eaee7f090 MD5 · raw file
- <?php
- /**
- * @version $Id:output.php 6961 2007-03-15 16:06:53Z tcp $
- * @package Joomla.Framework
- * @subpackage Filter
- * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
- * @license GNU/GPL, see LICENSE.php
- * Joomla! is free software. This version may have been modified pursuant to the
- * GNU General Public License, and as distributed it includes or is derivative
- * of works licensed under the GNU General Public License or other free or open
- * source software licenses. See COPYRIGHT.php for copyright notices and
- * details.
- */
- defined('JPATH_BASE') or die();
- /**
- * JFilterOutput
- *
- * @static
- * @package Joomla.Framework
- * @subpackage Filter
- * @since 1.5
- */
- class JFilterOutput
- {
- /**
- * Makes an object safe to display in forms
- *
- * Object parameters that are non-string, array, object or start with underscore
- * will be converted
- *
- * @static
- * @param object An object to be parsed
- * @param int The optional quote style for the htmlspecialchars function
- * @param string|array An optional single field name or array of field names not
- * to be parsed (eg, for a textarea)
- * @since 1.5
- */
- function objectHTMLSafe( &$mixed, $quote_style=ENT_QUOTES, $exclude_keys='' )
- {
- if (is_object( $mixed ))
- {
- foreach (get_object_vars( $mixed ) as $k => $v)
- {
- if (is_array( $v ) || is_object( $v ) || $v == NULL || substr( $k, 1, 1 ) == '_' ) {
- continue;
- }
- if (is_string( $exclude_keys ) && $k == $exclude_keys) {
- continue;
- } else if (is_array( $exclude_keys ) && in_array( $k, $exclude_keys )) {
- continue;
- }
- $mixed->$k = htmlspecialchars( $v, $quote_style, 'UTF-8' );
- }
- }
- }
- /**
- * This method processes a string and replaces all instances of & with & in links only
- *
- * @static
- * @param string $input String to process
- * @return string Processed string
- * @since 1.5
- */
- function linkXHTMLSafe($input)
- {
- $regex = 'href="([^"]*(&(amp;){0})[^"]*)*?"';
- return preg_replace_callback( "#$regex#i", array('JFilterOutput', '_ampReplaceCallback'), $input );
- }
- /**
- * This method processes a string and replaces all accented UTF-8 characters by unaccented
- * ASCII-7 "equivalents", whitespaces are replaced by hyphens and the string is lowercased.
- *
- * @static
- * @param string $input String to process
- * @return string Processed string
- * @since 1.5
- */
- function stringURLSafe($string)
- {
- //remove any '-' from the string they will be used as concatonater
- $str = str_replace('-', ' ', $string);
- $lang =& JFactory::getLanguage();
- $str = $lang->transliterate($str);
- // remove any duplicate whitespace, and ensure all characters are alphanumeric
- $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);
- // lowercase and trim
- $str = trim(strtolower($str));
- return $str;
- }
- /**
- * Replaces & with & for xhtml compliance
- *
- * @todo There must be a better way???
- *
- * @static
- * @since 1.5
- */
- function ampReplace( $text )
- {
- $text = str_replace( '&&', '*--*', $text );
- $text = str_replace( '&#', '*-*', $text );
- $text = str_replace( '&', '&', $text );
- $text = preg_replace( '|&(?![\w]+;)|', '&', $text );
- $text = str_replace( '*-*', '&#', $text );
- $text = str_replace( '*--*', '&&', $text );
- return $text;
- }
- /**
- * Callback method for replacing & with & in a string
- *
- * @static
- * @param string $m String to process
- * @return string Replaced string
- * @since 1.5
- */
- function _ampReplaceCallback( $m )
- {
- $rx = '&(?!amp;)';
- return preg_replace( '#'.$rx.'#', '&', $m[0] );
- }
- /**
- * Cleans text of all formating and scripting code
- */
- function cleanText ( &$text )
- {
- $text = preg_replace( "'<script[^>]*>.*?</script>'si", '', $text );
- $text = preg_replace( '/<a\s+.*?href="([^"]+)"[^>]*>([^<]+)<\/a>/is', '\2 (\1)', $text );
- $text = preg_replace( '/<!--.+?-->/', '', $text );
- $text = preg_replace( '/{.+?}/', '', $text );
- $text = preg_replace( '/ /', ' ', $text );
- $text = preg_replace( '/&/', ' ', $text );
- $text = preg_replace( '/"/', ' ', $text );
- $text = strip_tags( $text );
- $text = htmlspecialchars( $text );
- return $text;
- }
- }