Перекодировка строки, содержащей UTF-8 + другую кодировку

Bor-ka

Новичок
Перекодировка строки, содержащей UTF-8 + другую кодировку

Имеется строка, содержащая кроме UTF-8 еще какие либо символы кирилицы.

Например:
----------------------
Проверка связи FDSAFSD ывы dsdsds <IMG SRC=&# 106;&# 97;&# 118;&# 97;&# 115;&# 99;&# 114;&# 105;&# 112;&# 116;&# 58;&# 97;&# 108;&# 101;&# 114;&# 116;&# 40;&# 39;&# 88;&# 83;&# 83;&# 39;&# 41>

UPD: Добавил пробелы между символами, чтобы видно было
----------------------

Перекодировка из UTF-8 осуществляю ф-ей encode():

PHP:
function code2utf($num)
{
	if ($num < 255)
		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 '';
}

function encode($str)
{
	return preg_replace('/&#(\\d+);/e', 'code2utf($1)',utf8_encode($str));
}
т.к. html_entity_decode($string, ENT_COMPAT, "UTF-8") не работает - "cannot yet handle MBCS in html_entity_decode()"

Если же вместе с UTF-8 содержится и кирилистический текст - кирилица превращается в крякозяблы. если только кирилица - то тоже крякозяблы.

Как решить вопрос преобразования из UTF-8 только UTF-8 символов.
 

kvf77

Red Devil
Bor-ka

давай ты нам лучше ответишь - какого... у тебя текст содержится в перемешку? объясни нам смысл этого колдовства

что касается UTF-8, то обычно таким образом символы записываются в кодировку UTF-16, а не 8, и вообще странный достаточно набор. В любом случае, прежде чем задавать вопрос тут - надо идти в FAQ и читать раздел" Кодировки, который не просто так наверное написан.

http://phpclub.ru/faq/wakka.php?wakka=encodings&v=x3z
 

Bor-ka

Новичок
kvf77
у меня не содержатся :)
это для фильтрафии входных данных на предмет вырезки XSS атак, которые могут быть различными.
 

kvf77

Red Devil
Автор оригинала: Bor-ka
kvf77
у меня не содержатся :)
это для фильтрафии входных данных на предмет вырезки XSS атак, которые могут быть различными.
типа тебя бедного заатаковали? бывает - помоему, все же, ты не тем занимаешься

FAQ почитал - или как многие ждешь готового решения?
 

Bor-ka

Новичок
> типа тебя бедного заатаковали?
неуместное замечание.

>бывает - помоему, все же, ты не тем занимаешься
чем по Вашему следует заниматься?

>FAQ почитал - или как многие ждешь готового решения?
FAQ читаю и пробую. о результатх доложу :)

-~{}~ 19.10.05 12:11:

Благодарю за помощь.

заменил utf8_encode на функцию

function Charset2Entity($str,$charset='CP1251')
{ // by SiMM
return preg_replace('#[\x80-\xFF]#se',
"'&#'.join('',unpack('v',iconv('$charset','UTF-16LE','$0'))).';'",
$str);
}
 

Bor-ka

Новичок
kvf77
Образцы CSS (XSS) атак:
http://ha.ckers.org/xss.html

Вот здесь пример, только он не полный. сейчас дописываю:
http://phpclub.ru/faq/wakka.php?wakka=XSS/Prevention&v=f9p
 

kvf77

Red Devil
Bor-ka

а, ну да - я предпочитаю запрещать html теги в формы сувать
 
Сверху