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

  #3  
Старый 01.01.2010, 14:37
#Wolf#
Постоянный
Регистрация: 26.03.2008
Сообщений: 311
С нами: 9540826

Репутация: 479
По умолчанию

Цитата:
Сообщение от spamoney  
Ребят, html_entity_decode и htmlspecialchars_decode как я понимаю преобразует только символы (ковычки, & и т.д), но не слова...
b3 же дал ссылку тебе.
PHP код:
$str='твои_говносимволы';

function 
html_entity_decode_utf8($string)
{   static 
$trans_tbl;
       
$string preg_replace('~&#x([0-9a-f]+);~ei''code2utf(hexdec("\\1"))'$string);
    
$string preg_replace('~&#([0-9]+);~e''code2utf(\\1)'$string);
    if (!isset(
$trans_tbl))
    {
        
$trans_tbl = array();
       
        foreach (
get_html_translation_table(HTML_ENTITIES) as $val=>$key)
            
$trans_tbl[$key] = utf8_encode($val);
    }
   return 
strtr($string$trans_tbl);
}
function 
code2utf($num)
{
    if (
$num 128) return chr($num);
    if (
$num 2048) return chr(($num >> 6) + 192) . chr(($num 63) + 128);
    if (
$num 65536) return chr(($num >> 12) + 224) . chr((($num >> 6) & 63) + 128) . chr(($num 63) + 128);
    if (
$num 2097152) return chr(($num >> 18) + 240) . chr((($num >> 12) & 63) + 128) . chr((($num >> 6) & 63) + 128) . chr(($num 63) + 128);
    return 
'';
}
echo 
html_entity_decode_utf8($str); 
и вот

PHP код:
$string='твои_говносимволы';

function 
utf8_replaceEntity($result){
        
$value = (int)$result[1];
        
$string '';
       
        
$len round(pow($value,1/8));
       
        for(
$i=$len;$i>0;$i--){
            
$part = ($value & (255>>2)) | pow(2,7);
            if ( 
$i == $part |= 255<<(8-$len);
           
            
$string chr($part) . $string;
           
            
$value >>= 6;
        }
       
        return 
$string;
    }
   
    function 
utf8_html_entity_decode($string){
        return 
preg_replace_callback(
            
'/&#([0-9]+);/u',
            
'utf8_replaceEntity',
            
$string
        
);
    }
   ;
    
$string utf8_html_entity_decode($string,null,'UTF-8');
   
header('Content-Type: text/html; charset=UTF-8');
    echo 
$string

Последний раз редактировалось #Wolf#; 01.01.2010 в 14:41..
 
Ответить с цитированием