|
|
| Function convert UTF-8 to windows-1251 | |
| |
|
Добавлено : 2007-11-08 03:36:39 . Пользователем : BOSS . Все предложения : BOSS . Просмотров - 7332
|
Специальный код
<?php
function Utf8ToWin($fcontents) {
$out = $c1 = ;
$byte2 = false;
for ($c = 0;$c < strlen($fcontents);$c++) {
$i = ord($fcontents[$c]);
if ($i <= 127) {
$out .= $fcontents[$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;
}
# Пример использования
$fcontents = Utf8ToWin(Строка в кодировке UTF-8);
?>
|
Специальный код
<?php
function UTF8toCP1251($str){ // by SiMM, $table from http://ru.wikipedia.org/wiki/CP1251
static $table = array("xD0x81" => "xA8", // Ё
"xD1x91" => "xB8", // ё
// украинские символы
"xD0x8E" => "xA1", // Ў (У)
"xD1x9E" => "xA2", // ў (у)
"xD0x84" => "xAA", // Є (Э)
"xD0x87" => "xAF", // Ї (I..)
"xD0x86" => "xB2", // I (I)
"xD1x96" => "xB3", // i (i)
"xD1x94" => "xBA", // є (э)
"xD1x97" => "xBF", // ї (i..)
// чувашские символы
"xD3x90" => "x8C", // Ӑ (А)
"xD3x96" => "x8D", // Ӗ (Е)
"xD2xAA" => "x8E", // Ҫ (С)
"xD3xB2" => "x8F", // Ӳ (У)
"xD3x91" => "x9C", // ӑ (а)
"xD3x97" => "x9D", // ӗ (е)
"xD2xAB" => "x9E", // ҫ (с)
"xD3xB3" => "x9F", // ӳ (у)
);
return preg_replace(#([xD0-xD1])([x80-xBF])#se,
isset($table["$0"]) ? $table["$0"] :
chr(ord("$2")+("$1" == "xD0" ? 0x30 : 0x70))
,
$str
);
}
?>
|
Специальный код
<?php
function CP1251toUTF8($str){ // (C) SiMM, $table from http://ru.wikipedia.org/wiki/CP1251
static $table = array("xA8" => "xD0x81", // Ё
"xB8" => "xD1x91", // ё
// украинские символы
"xA1" => "xD0x8E", // Ў (У)
"xA2" => "xD1x9E", // ў (у)
"xAA" => "xD0x84", // Є (Э)
"xAF" => "xD0x87", // Ї (I..)
"xB2" => "xD0x86", // I (I)
"xB3" => "xD1x96", // i (i)
"xBA" => "xD1x94", // є (э)
"xBF" => "xD1x97", // ї (i..)
// чувашские символы
"x8C" => "xD3x90", // Ӑ (A)
"x8D" => "xD3x96", // Ӗ (E)
"x8E" => "xD2xAA", // Ҫ (С)
"x8F" => "xD3xB2", // Ӳ (У)
"x9C" => "xD3x91", // ӑ (а)
"x9D" => "xD3x97", // ӗ (е)
"x9E" => "xD2xAB", // ҫ (с)
"x9F" => "xD3xB3", // ӳ (у)
);
return preg_replace(#[x80-xFF]#se,
"$0" >= "xF0" ? "xD1".chr(ord("$0")-0x70) :
("$0" >= "xC0" ? "xD0".chr(ord("$0")-0x30) :
(isset($table["$0"]) ? $table["$0"] : "")
),
$str
);
}
?>
|
Специальный код
Как определить что текст в UTF-8?
<?php
function is_ruUTF8($str) { // Функция определяет "похожесть" строки на русскую UTF8 (C) SiMM
return !preg_replace(#[x00-x7F]xD0[x81x90-xBF]xD1[x91x80-x8F]#s, , $str );
}
?>
|
Специальный код
Битый UTF-8
Анализирует строку в UTF-8 и убирает «битые» символы.
<?php
function Strip Bad UTF 8?($str) { // (C) Si MM?, based on ru.wikipedia.org/wiki/Unicode
$ret = ;
for ($i = 0;$i < strlen($str);) {
$tmp = $str{$i++};
$ch = ord($tmp);
if ($ch > 0x7F) {
if ($ch < 0xC0) continue;
elseif ($ch < 0xE0) $di = 1;
elseif ($ch < 0xF0) $di = 2;
elseif ($ch < 0xF8) $di = 3;
elseif ($ch < 0xFC) $di = 4;
elseif ($ch < 0xFE) $di = 5;
else continue;
for ($j = 0;$j < $di;$j++) {
$tmp .= $ch = $str{$i + $j};
$ch = ord($ch);
if ($ch < 0x80 $ch > 0xBF) continue 2;
}
$i += $di;
}
$ret .= $tmp;
}
return $ret;
}
?>
|
|
Ключевые слова :
|
|
Для добавления вашего коментария вы должны авторизоваться , если вы не зарегистрированы то зарегистрируйтесь .
|
|
|
| |
|
Shop4guru © v.3.1.1, Copyright © 2005-2008, 4gu.ru Ltd. Русская версия: Shop4guru ™
|