Перевод "&#1054" в буквы

Перевод "&#1054" в буквы

Нужно перевести код типа "&#1055&#1086&#1088&#1090&#1084&#1086&#1085&#1077" в русские буквы. Нужна таблица соотвествия (вроде, "&#1055" => "С"). Если есть какие-то готовые варианты, то буду рад узнать о них.
 
http://phpclub.ru/faq/encodings мне почему-то не помогло, написал вот такой код (функцию взял из примеров, массив написал сам)


$_mnemotrans = array(
"&#97" => "a", "&#98" => "b", "&#99" => "c", "&#100" => "d", "&#101" => "e",
"&#102" => "f", "&#103" => "g", "&#104" => "h", "&#105" => "i", "&#106" => "j",
"&#107" => "k", "&#108" => "l", "&#109" => "m", "&#110" => "n", "&#111" => "o",
"&#112" => "p", "&#113" => "q", "&#114" => "r", "&#115" => "s", "&#116" => "t",
"&#117" => "u", "&#118" => "v", "&#119" => "w", "&#120" => "x", "&#121" => "y",
"&#122" => "z",
"&#65" => "A", "&#66" => "B", "&#67" => "C", "&#68" => "D", "&#69" => "E",
"&#70" => "F", "&#71" => "G", "&#72" => "H", "&#73" => "I", "&#74" => "J",
"&#75" => "K", "&#76" => "L", "&#77" => "M", "&#78" => "N", "&#79" => "O",
"&#80" => "P", "&#81" => "Q", "&#82" => "R", "&#83" => "S", "&#84" => "T",
"&#85" => "U", "&#86" => "V", "&#87" => "W", "&#88" => "X", "&#89" => "Y",
"&#90" => "Z",
"&#91" => "[", "&#92" => "/", "&#93" => "]", "&#94" => "^", "&#95" => "_", "&#96" => "`",
"&#10"=>" ", "&#32"=>" ", "&#33"=>"!", "&#34"=>'"', "&#35"=>"#", "&#36"=>"$", "&#37"=>"%",
"&#38"=>"&", "&#39"=>"'", "&#40"=>"(", "&#41"=>")", "&#42"=>"*", "&#43"=>"+", "&#44"=>",",
"&#45"=>"-", "&#46"=>".", "&#47"=>"/", "&#48"=>"0", "&#49"=>"1", "&#50"=>"2", "&#51"=>"3",
"&#52"=>"4", "&#53"=>"5", "&#54"=>"6", "&#55"=>"7", "&#56"=>"8", "&#57"=>"9", "&#58"=>":",
"&#59"=>";", "&#60"=>"<", "&#61"=>"=", "&#62"=>">", "&#63"=>"?", "&#64"=>"@",
"&#1072"=>"а", "&#1073"=>"б", "&#1074"=>"в", "&#1075"=>"г", "&#1076"=>"д",
"&#1077"=>"е", "&#1105"=>"ё", "&#1078"=>"ж", "&#1079"=>"з", "&#1080"=>"и",
"&#1081"=>"й", "&#1082"=>"к", "&#1083"=>"л", "&#1084"=>"м", "&#1085"=>"н",
"&#1086"=>"о", "&#1087"=>"п", "&#1088"=>"р", "&#1089"=>"с", "&#1090"=>"т",
"&#1091"=>"у", "&#1092"=>"ф", "&#1093"=>"х", "&#1094"=>"ц", "&#1095"=>"ч",
"&#1096"=>"ш", "&#1097"=>"щ", "&#1100"=>"ь", "&#1098"=>"ъ", "&#1101"=>"э",
"&#1102"=>"ю", "&#1103" => "я",
"&#1040"=>"А", "&#1041"=>"Б", "&#1042"=>"В", "&#1043"=>"Г", "&#1044"=>"Д",
"&#1045"=>"Е", "&#1025"=>"Ё", "&#1046"=>"Ж", "&#1047"=>"З", "&#1048"=>"И",
"&#1049"=>"Й", "&#1050"=>"К", "&#1051"=>"Л", "&#1052"=>"М", "&#1053"=>"Н",
"&#1054"=>"О", "&#1055"=>"П", "&#1056"=>"Р", "&#1057"=>"С", "&#1058"=>"Т",
"&#1059"=>"У", "&#1060"=>"Ф", "&#1061"=>"Х", "&#1062"=>"Ц", "&#1063"=>"Ч",
"&#1064"=>"Ш", "&#1065"=>"Щ", "&#1068"=>"Ь", "&#1066"=>"Ъ", "&#1069"=>"Э",
"&#1070"=>"Ю", "&#1071" => "Я");


function mnemotrans($a) {
global $_mnemotrans;
if (is_array($a)){
foreach ($a as $k => $v) {
if (is_array($v)) {
$a[$k] = mnemotrans($v);
} else {
$a[$k] = strtr($v, $_mnemotrans);
}
}
return $a;
} else {
return strtr($a, $_mnemotrans);
}
}
 

SiMM

Новичок
> мне почему-то не помогло
Потому что готовить не умеешь.
&#1055&#1086&#1088&#1090&#1084&#1086&#1085&#1077 - Портмоне
Надо не тупо копировать код - а хоть немного задумываясь о том, как он работает
 
Автор оригинала: SiMM
> мне почему-то не помогло
Потому что готовить не умеешь.

&#1055&#1086&#1088&#1090&#1084&#1086&#1085&#1077 - Портмоне
Надо не тупо копировать код - а хоть немного задумываясь о том, как он работает
С готовкой у меня слабо, это правда.
Задумываться конечно надо, но вариант, которым я воспользовался тоже имеет право на жизнь, хотя он довольно некрасивый.
 

Olsufr

Guest
Подскажите как выполнить обратную трасформацию текста?

Т.е. текст в любой из однобайтной кодировке (заранее неизвестна) нужно трансформировать в строку вида '&#1055&#1086&#1088&#1090&#1084&#1086&#1085&#1077'
Причем данная трансформация касается симовлов не [a-zA-Z0-9]

Может для этого есть что-то встроенное в PHP?
 

SiMM

Новичок
> Подскажите как выполнить обратную трасформацию текста?
В FAQ есть масса примеров. Изучив которые решить подобную задачу не составит труда.
 

Olsufr

Guest
Пришел к выводу, что, не зная исходной, однобайтной кодировки текста (а это первое условие в данном случае) трансформация всех символов с кодами из второй половины кодовой таблицы просто невозможна. Так что вопрос снимается.
 

Olsufr

Guest
white phoenix
Например, в однобайтном тексте встречаем байт "C2". И теперь, не зная какая именно должна использоваться кодовая таблица, нельзя определить что это за символ:
в Windows-1251 это русская большая буква "В",
а в Windows-1257 это будет большая буква "А" с горизонтальной чертой сверху.
 

white phoenix

Новичок
Olsufr
Чтобы сконвертировать из однобайтной кодировки в мультибайтную нужно знать название однобайтной. Но чтобы сконвертировать из мультибайтной в однобайтную не обязательно знать название исходной. Ведь в мультибайтных кодировках символ задается однозначно.
 
Сверху