
01.01.2010, 14:37
|
|
Постоянный
Регистрация: 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 == 1 ) $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..
|
|
|