165 行
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
		
		
			
		
	
	
			165 行
		
	
	
	
		
			3.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
								 | 
							
								<?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		ExpressionEngine Dev Team
							 | 
						||
| 
								 | 
							
								 * @copyright	Copyright (c) 2008 - 2011, EllisLab, Inc.
							 | 
						||
| 
								 | 
							
								 * @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		ExpressionEngine 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 preg_replace('/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S', '', $str);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// --------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
									 * 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 */
							 |