Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Пользователь


Сообщения: 67
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
html_entity_decode
символ А не переводит в А, а оставляет его без изменений - проверено - результат сравнения false, хотя на экране действительно выглядит похоже.
Цитата:
Метод JsHttpRequest::ucs2EntitiesDecode
PHP код: Выделить весь код

/** 

     * Decode all %uXXXX entities in string or array (recurrent). 
     * String must not contain %XX entities - they are ignored! 
     */ 
    
function _ucs2EntitiesDecode($data
    { 
        if (
is_array($data)) { 
            
$d = array(); 
            foreach (
$data as $k=>$v) { 
                
$d[$this->_ucs2EntitiesDecode($k)] = $this->_ucs2EntitiesDecode($v); 
            } 
            return 
$d
        } else { 
            if (
strpos($data'%u') !== false) { // improve speed 
                
$data preg_replace_callback('/%u([0-9A-F]{1,4})/si', array(&$this'_ucs2EntitiesDecodeCallback'), $data); 
            } 
            return 
$data
        } 
    } 


    
/** 
     * Decode one %uXXXX entity (RE callback). 
     */ 
    
function _ucs2EntitiesDecodeCallback($p
    { 
        
$hex $p[1]; 
        
$dec hexdec($hex); 
        if (
$dec === "38" && $this->SCRIPT_DECODE_MODE == 'entities') { 
            
// Process "&" separately in "entities" decode mode. 
            
$c "&"
        } else { 
            if (
is_callable('iconv')) { 
                
$c = @iconv('UCS-2BE'$this->SCRIPT_ENCODINGpack('n'$dec)); 
            } else { 
                
$c $this->_decUcs2Decode($dec$this->SCRIPT_ENCODING); 
            } 
            if (!
strlen($c)) { 
                if (
$this->SCRIPT_DECODE_MODE == 'entities') { 
                    
$c '&#'.$dec.';'
                } else { 
                    
$c '?'
                } 
            } 
        } 
        return 
$c
    } 


    
/** 
     * If there is no ICONV, try to decode 1-byte characters manually 
     * (for most popular charsets only). 
     */ 

    /** 
     * Convert from UCS-2BE decimal to $toEnc. 
     */ 
    
function _decUcs2Decode($code$toEnc
    { 
        if (
$code 128) return chr($code); 
        if (isset(
$this->_encTables[$toEnc])) { 
            
$p array_search($code$this->_encTables[$toEnc]); 
            if (
$p !== false) return chr(128 $p); 
        } 
        return 
""
    } 
     

    
/** 
     * UCS-2BE -> 1-byte encodings (from #128). 
     */ 
    
var $_encTables = array( 
        
'windows-1251' => array( 
            
0x04020x04030x201A0x04530x201E0x20260x20200x2021
            
0x20AC0x20300x04090x20390x040A0x040C0x040B0x040F
            
0x04520x20180x20190x201C0x201D0x20220x20130x2014
            
0x00980x21220x04590x203A0x045A0x045C0x045B0x045F
            
0x00A00x040E0x045E0x04080x00A40x04900x00A60x00A7
            
0x04010x00A90x04040x00AB0x00AC0x00AD0x00AE0x0407
            
0x00B00x00B10x04060x04560x04910x00B50x00B60x00B7
            
0x04510x21160x04540x00BB0x04580x04050x04550x0457
            
0x04100x04110x04120x04130x04140x04150x04160x0417
            
0x04180x04190x041A0x041B0x041C0x041D0x041E0x041F
            
0x04200x04210x04220x04230x04240x04250x04260x0427
            
0x04280x04290x042A0x042B0x042C0x042D0x042E0x042F
            
0x04300x04310x04320x04330x04340x04350x04360x0437
            
0x04380x04390x043A0x043B0x043C0x043D0x043E0x043F
            
0x04400x04410x04420x04430x04440x04450x04460x0447
            
0x04480x04490x044A0x044B0x044C0x044D0x044E0x044F
        ), 
        
'koi8-r' => array( 
            
0x25000x25020x250C0x25100x25140x25180x251C0x2524
            
0x252C0x25340x253C0x25800x25840x25880x258C0x2590
            
0x25910x25920x25930x23200x25A00x22190x221A0x2248
            
0x22640x22650x00A00x23210x00B00x00B20x00B70x00F7
            
0x25500x25510x25520x04510x25530x25540x25550x2556
            
0x25570x25580x25590x255A0x255B0x255C0x255d0x255E
            
0x255F0x25600x25610x04010x25620x25630x25640x2565
            
0x25660x25670x25680x25690x256A0x256B0x256C0x00A9
            
0x044E0x04300x04310x04460x04340x04350x04440x0433
            
0x04450x04380x04390x043A0x043B0x043C0x043d0x043E
            
0x043F0x044F0x04400x04410x04420x04430x04360x0432
            
0x044C0x044B0x04370x04480x044d0x04490x04470x044A
            
0x042E0x04100x04110x04260x04140x04150x04240x0413
            
0x04250x04180x04190x041A0x041B0x041C0x041d0x041E
            
0x041F0x042F0x04200x04210x04220x04230x04160x0412
            
0x042C0x042B0x04170x04280x042d0x04290x04270x042A       
        
), 
    ); 

всё просто супер, но, если у нас нет iconv мы опять-таки упираемся в массив

Цитата:
for most popular charsets only
ключевое слово здесь only IMHO
а если это немец и он по-немецки пишет??? его каракули не переведутся и съедут в крякозяблы!!!

Отправлено: 09:15, 28-12-2006 | #15