You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							54 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							54 lines
						
					
					
						
							1.2 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * Convert from Utf8 to another encoding: 
 | 
						|
 * 
 | 
						|
 *      - remove BOM
 | 
						|
 *      - change encoding
 | 
						|
 *
 | 
						|
 * @copyright (c) 2012 University of Geneva
 | 
						|
 * @license GNU General Public License - http://www.gnu.org/copyleft/gpl.html
 | 
						|
 * @author Laurent Opprecht <laurent@opprecht.info>
 | 
						|
 */
 | 
						|
class Utf8Decoder extends Converter
 | 
						|
{
 | 
						|
 | 
						|
    protected $started = false;
 | 
						|
    protected $to_encoding;
 | 
						|
    protected $encoding_converter;
 | 
						|
 | 
						|
    function __construct($to_encoding = null)
 | 
						|
    {
 | 
						|
        $this->to_encoding = $to_encoding ? $to_encoding : Encoding::system();
 | 
						|
        $this->encoding_converter = EncodingConverter::create(Utf8::NAME, $this->to_encoding);
 | 
						|
        $this->reset();
 | 
						|
    }
 | 
						|
 | 
						|
    function from_encoding()
 | 
						|
    {
 | 
						|
        return Utf8::NAME;
 | 
						|
    }
 | 
						|
 | 
						|
    function to_encoding()
 | 
						|
    {
 | 
						|
        return $this->to_encoding;
 | 
						|
    }
 | 
						|
 | 
						|
    function reset()
 | 
						|
    {
 | 
						|
        $this->started = false;
 | 
						|
    }
 | 
						|
 | 
						|
    function convert($string)
 | 
						|
    {
 | 
						|
        if (!$this->started) {
 | 
						|
            $this->started = true;
 | 
						|
            $string = Utf8::instance()->trim($string);
 | 
						|
            return $this->encoding_converter->convert($string);
 | 
						|
        } else {
 | 
						|
            return $this->encoding_converter->convert($string);
 | 
						|
        }
 | 
						|
        return $string;
 | 
						|
    }
 | 
						|
 | 
						|
} |