<?php

// v 1.0

$GLOBALS['characters_table'] =
    array(
# cyrillic hex
	"À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
	"Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß",
	"à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
	"ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ",
	"¨", "¸",
# cyrillic dec
	"À", "Á", "Â", "Ã", "Ä", "Å", "Æ", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï",
	"Ð", "Ñ", "Ò", "Ó", "Ô", "Õ", "Ö", "×", "Ø", "Ù", "Ú", "Û", "Ü", "Ý", "Þ", "ß",
	"à", "á", "â", "ã", "ä", "å", "æ", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï",
	"ð", "ñ", "ò", "ó", "ô", "õ", "ö", "÷", "ø", "ù", "ú", "û", "ü", "ý", "þ", "ÿ",
	"¨", "¸",
# spaces
	"&nbsp;", "&nbsp;",
# some characters
	"&apos;", "&apos;", "[", "[", "]", "]"
    );

$GLOBALS['entities_table'] =
    array(
# cyrillic hex
	"&#x0410;", "&#x0411;", "&#x0412;", "&#x0413;", "&#x0414;", "&#x0415;", "&#x0416;", "&#x0417;",
	"&#x0418;", "&#x0419;", "&#x041A;", "&#x041B;", "&#x041C;", "&#x041D;", "&#x041E;", "&#x041F;",
	"&#x0420;", "&#x0421;", "&#x0422;", "&#x0423;", "&#x0424;", "&#x0425;", "&#x0426;", "&#x0427;",
	"&#x0428;", "&#x0429;", "&#x042A;", "&#x042B;", "&#x042C;", "&#x042D;", "&#x042E;", "&#x042F;",
	"&#x0430;", "&#x0431;", "&#x0432;", "&#x0433;", "&#x0434;", "&#x0435;", "&#x0436;", "&#x0437;",
	"&#x0438;", "&#x0439;", "&#x043A;", "&#x043B;", "&#x043C;", "&#x043D;", "&#x043E;", "&#x043F;",
	"&#x0440;", "&#x0441;", "&#x0442;", "&#x0443;", "&#x0444;", "&#x0445;", "&#x0446;", "&#x0447;",
	"&#x0448;", "&#x0449;", "&#x044A;", "&#x044B;", "&#x044C;", "&#x044D;", "&#x044E;", "&#x044F;",
	"&#x0401;", "&#x451;",
# cyrillic dec
	"&#1040;", "&#1041;", "&#1042;", "&#1043;", "&#1044;", "&#1045;", "&#1046;", "&#1047;",
	"&#1048;", "&#1049;", "&#1050;", "&#1051;", "&#1052;", "&#1053;", "&#1054;", "&#1055;",
	"&#1056;", "&#1057;", "&#1058;", "&#1059;", "&#1060;", "&#1061;", "&#1062;", "&#1063;",
	"&#1064;", "&#1065;", "&#1066;", "&#1067;", "&#1068;", "&#1069;", "&#1070;", "&#1071;",
	"&#1072;", "&#1073;", "&#1074;", "&#1075;", "&#1076;", "&#1077;", "&#1078;", "&#1079;",
	"&#1080;", "&#1081;", "&#1082;", "&#1083;", "&#1084;", "&#1085;", "&#1086;", "&#1087;",
	"&#1088;", "&#1089;", "&#1090;", "&#1091;", "&#1092;", "&#1093;", "&#1094;", "&#1095;",
	"&#1096;", "&#1097;", "&#1098;", "&#1099;", "&#1100;", "&#1101;", "&#1102;", "&#1103;",
	"&#1025;", "&#1105;",
# spaces
	"&#x00a0;", "&#160;",
# some characters
	"&#x0027;", "&#039;", "&#x005B;", "&#91;", "&#x005D;", "&#93;"
    );

function entitiesToCharacters($str)
{
    return str_replace($GLOBALS['entities_table'], $GLOBALS['characters_table'], $str);
}

function charactersToEntities($str)
{
    return str_replace($GLOBALS['characters_table'], $GLOBALS['entities_table'], $str);
}

function entitiesToCharacters__recursive($array)
{
    foreach ($array as $k=>$v)
	$array[$k] = entitiesToCharacters($v);
    return $array;
}

function charactersToEntities__recursive($array)
{
    foreach ($array as $k=>$v)
	$array[$k] = charactersToEntities($v);
    return $array;
}

?>