Анализатор текста страницы с поддержкой Юникод

K
На сайте с 10.08.2006
Offline
34
535

Есть ли аналоги иструмента http://www.promolab.ru/free/parser.php но с поддержкой Юникод?

Или хотя бы скажите,как можно перекодировать "слова" вида "сќр№рєрё", "рґрѕ", и т.д. в русские буквы?

Блог о жизни в IT (http://www.administrating.ru/) Блог SEO негоцианта (http://blog.negotiant.org/)
Kolyaj
На сайте с 28.03.2006
Offline
69
#1
klarkin:
Или хотя бы скажите,как можно перекодировать "слова" вида "сќр№рєрё", "рґрѕ", и т.д. в русские буквы?

Перевод из UTF-8 в windows-1251


function utf8towin($string){
for ($c = 0; $c < strlen($string); $c++) {
$i = ord($string[$c]);
if ($i <= 127) @$out .= $string[$c];
if (@$byte2) {
$new_c2 = ($c1 & 3) * 64 + ($i & 63);
$new_c1 = ($c1 >> 2) & 5;
$new_i = $new_c1 * 256 + $new_c2;
if ($new_i == 1025){
$out_i = 168;
} else {
if ($new_i == 1105){
$out_i = 184;
} else {
$out_i = $new_i - 848;
}
}
@$out .= chr($out_i);
$byte2 = false;
}
if (($i >> 5) == 6) {
$c1 = $i;
$byte2 = true;
}
}
return $out;
}

Обратно

function wintoutf8($s) {
$t = '';
for ($i = 0, $m = strlen($s); $i < $m; $i++) {
$c = ord($s[$i]);
if ($c <= 127) { $t .= chr($c); continue; }
if ($c >= 192 && $c <= 207) { $t .= chr(208) . chr($c - 48); continue; }
if ($c >= 208 && $c <= 239) { $t .= chr(208) . chr($c - 48); continue; }
if ($c >= 240 && $c <= 255) { $t .= chr(209) . chr($c - 112); continue; }
if ($c == 184) { $t .= chr(209) . chr(209); continue; };
if ($c == 168) { $t .= chr(208) . chr(129); continue; };
}
return $t;
}

P.S. Это если iconv нет на сервере.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий