123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
- /**
- * CodeIgniter
- *
- * An open source application development framework for PHP 5.1.6 or newer
- *
- * @package CodeIgniter
- * @author EllisLab Dev Team
- * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc.
- * @copyright Copyright (c) 2014 - 2015, British Columbia Institute of Technology (http://bcit.ca/)
- * @license http://codeigniter.com/user_guide/license.html
- * @link http://codeigniter.com
- * @since Version 2.0
- * @filesource
- */
- // ------------------------------------------------------------------------
- /**
- * Utf8 Class
- *
- * Provides support for UTF-8 environments
- *
- * @package CodeIgniter
- * @subpackage Libraries
- * @category UTF-8
- * @author EllisLab Dev Team
- * @link http://codeigniter.com/user_guide/libraries/utf8.html
- */
- class CI_Utf8 {
- /**
- * Constructor
- *
- * Determines if UTF-8 support is to be enabled
- *
- */
- function __construct()
- {
- log_message('debug', "Utf8 Class Initialized");
- global $CFG;
- if (
- preg_match('/./u', 'é') === 1 // PCRE must support UTF-8
- AND function_exists('iconv') // iconv must be installed
- AND ini_get('mbstring.func_overload') != 1 // Multibyte string function overloading cannot be enabled
- AND $CFG->item('charset') == 'UTF-8' // Application charset must be UTF-8
- )
- {
- log_message('debug', "UTF-8 Support Enabled");
- define('UTF8_ENABLED', TRUE);
- // set internal encoding for multibyte string functions if necessary
- // and set a flag so we don't have to repeatedly use extension_loaded()
- // or function_exists()
- if (extension_loaded('mbstring'))
- {
- define('MB_ENABLED', TRUE);
- mb_internal_encoding('UTF-8');
- }
- else
- {
- define('MB_ENABLED', FALSE);
- }
- }
- else
- {
- log_message('debug', "UTF-8 Support Disabled");
- define('UTF8_ENABLED', FALSE);
- }
- }
- // --------------------------------------------------------------------
- /**
- * Clean UTF-8 strings
- *
- * Ensures strings are UTF-8
- *
- * @access public
- * @param string
- * @return string
- */
- function clean_string($str)
- {
- if ($this->_is_ascii($str) === FALSE)
- {
- $str = @iconv('UTF-8', 'UTF-8//IGNORE', $str);
- }
- return $str;
- }
- // --------------------------------------------------------------------
- /**
- * Remove ASCII control characters
- *
- * Removes all ASCII control characters except horizontal tabs,
- * line feeds, and carriage returns, as all others can cause
- * problems in XML
- *
- * @access public
- * @param string
- * @return string
- */
- function safe_ascii_for_xml($str)
- {
- return remove_invisible_characters($str, FALSE);
- }
- // --------------------------------------------------------------------
- /**
- * Convert to UTF-8
- *
- * Attempts to convert a string to UTF-8
- *
- * @access public
- * @param string
- * @param string - input encoding
- * @return string
- */
- function convert_to_utf8($str, $encoding)
- {
- if (function_exists('iconv'))
- {
- $str = @iconv($encoding, 'UTF-8', $str);
- }
- elseif (function_exists('mb_convert_encoding'))
- {
- $str = @mb_convert_encoding($str, 'UTF-8', $encoding);
- }
- else
- {
- return FALSE;
- }
- return $str;
- }
- // --------------------------------------------------------------------
- /**
- * Is ASCII?
- *
- * Tests if a string is standard 7-bit ASCII or not
- *
- * @access public
- * @param string
- * @return bool
- */
- function _is_ascii($str)
- {
- return (preg_match('/[^\x00-\x7F]/S', $str) == 0);
- }
- // --------------------------------------------------------------------
- }
- // End Utf8 Class
- /* End of file Utf8.php */
- /* Location: ./system/core/Utf8.php */
|