AgpeHaJIuH
Постоялец
- Регистрация
- 7 Июл 2008
- Сообщения
- 67
- Реакции
- 19
- Автор темы
- #1
Доброго времени суток!
В общем, я юзаю MagpieRSS для импорта новостей с рсс. Все работает отлично, но если кодировка сайта не одна из этих 3 (UTF-8, US-ASCII, ISO-8859-1), предположим, WINDOWS-1251, парсер начинает ругаться.
Я немного изменил код, добавив функцию iconv()
Все прекрасно конвертируется, но выскакивает ошибка xml_parse
Никто не сталкивался с такой проблемой? Что вот это (bytes 0x98 0xD0 0x9B 0xD0) означает?
Заранее спасибо :bc:
В общем, я юзаю MagpieRSS для импорта новостей с рсс. Все работает отлично, но если кодировка сайта не одна из этих 3 (UTF-8, US-ASCII, ISO-8859-1), предположим, WINDOWS-1251, парсер начинает ругаться.
Я немного изменил код, добавив функцию iconv()
PHP:
function create_parser($source, $out_enc, $in_enc, $detect) {
if (!$in_enc) {
if (preg_match('/<?xml.*encoding=[\'"](.*?)[\'"].*?>/m', $source, $m)) {
$in_enc = strtoupper($m[1]);
$this->source_encoding = $in_enc;
}
else {
$in_enc = '';
echo "Error detecting input encoding<br>";
}
echo "Encoding: ".$in_enc."<br/>";
}
if ($this->known_encoding($in_enc)) {
echo "Knowing encoding!!<br>";
echo $source;
return array(xml_parser_create('UTF-8'), $source);
}
// the dectected encoding is not one of the simple encodings php knows
// attempt to use the iconv extension to
// cast the XML to a known encoding
else{
echo "Unknown encoding!!<br>";
if (function_exists('iconv')) {
echo "iconv<br>";
$encoded_source = iconv($in_enc,'UTF-8', $source);
if ($encoded_source) {
$parser=xml_parser_create('UTF-8');
//echo "<br><hr>".$encoded_source;
}
}
elseif(function_exists('mb_convert_encoding')) {
$encoded_source = mb_convert_encoding($source, 'UTF-8', $in_enc );
if ($encoded_source) {
$parser=xml_parser_create('UTF-8');
}
}
}
$this->encoding = 'UTF-8';
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING, $out_enc);
return array($parser, $encoded_source);
//return array($parser, $encoded_source);
}
Все прекрасно конвертируется, но выскакивает ошибка xml_parse
PHP:
Warning: xml_parse() [function.xml-parse]: input conversion failed due to input error, bytes 0x98 0xD0 0x9B 0xD0 in ***\magpierss\rss_parse.inc on line 127
Никто не сталкивался с такой проблемой? Что вот это (bytes 0x98 0xD0 0x9B 0xD0) означает?
Заранее спасибо :bc: