сломался парсер xml, хелп!

guru85

Постоялец
Регистрация
24 Мар 2010
Сообщения
100
Реакции
4
вот собственно парсер
PHP:
$xml = new SimpleXMLElement("http://www.igromania.ru/rss/news.rss", NULL, TRUE);

$http = new s_http();
	$http->init();

Clear_array_empty($xml->channel->item);
foreach ($xml->channel->item as $item) {

 

$link=($item->link);
}
а вот error
PHP:
Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: http://www.igromania.ru/rss/news.rss:3: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xCD 0xCE 0xC2 0xCE in Y:\home\localhost\www\test\rssfeedpars\rssparser.php on line 8

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: <title>igromania.ru: НОВОСТИ, 04.08.2011</title> in Y:\home\localhost\www\test\rssfeedpars\rssparser.php on line 8

Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement---construct]: ^ in Y:\home\localhost\www\test\rssfeedpars\rssparser.php on line 8

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in Y:\home\localhost\www\test\rssfeedpars\rssparser.php:8 Stack trace: #0 Y:\home\localhost\www\test\rssfeedpars\rssparser.php(8): SimpleXMLElement->__construct('http://www.igro...', 0, true) #1 {main} thrown in Y:\home\localhost\www\test\rssfeedpars\rssparser.php on line 8
раньше все работало, но видимо что то изменилось с кодировкой на фиде
 
1) проверь включено ли extension=php_openssl.dll
2) если настройки не менялось и пункт 1 включен - пересохрани скрипт в новой кодировке фида (в нотепад++ можно сделать)
или стучись ко мне - помогу, если не буду занят))
 
не выходит, скрипт в кодеровке windows-1251 такой жк как и фид, а где пункт 1 посмотреть не знаю, php конфиге на хосте такого пункта не нашел.
 
в php.ini
судя по пути в ошибке - это локальный денвер?
 
Alexanderod Причём тут вообще php_openssl.dll ? Текст ошибки нужно внимательней читать. Там тупо говорится что кодровка не утф по этому пропарсить не получилось.

Простое решение.
PHP:
$xml = new SimpleXMLElement(iconv('cp1251', 'utf-8', file_get_contents("http://www.igromania.ru/rss/news.rss")) );
 
эти функции вообще с вин-1251 работают?
лень гуглить.
replace вроде только утф8 обрабатывает, тут так же?
 
а я ведь применял iconv, но видимо где то ошибся, в таком виде заработало, но вот вопрос, почему раньше работала, остается открытым, видимо поменяли кодировку.
 
эти функции вообще с вин-1251 работают?
лень гуглить.
replace вроде только утф8 обрабатывает, тут так же?
по вашему дак вообще php работает только с utf-8, все функции прекрасно работают и с win просто надо применять их воовремя и следить чтобы кодировки документа и данных совпадали
почему раньше работала, остается открытым
видимо раньше кодировка ленты была утф
 
эти функции вообще с вин-1251 работают?
лень гуглить.
replace вроде только утф8 обрабатывает, тут так же?
видимо лень не только гуглить но и думать... непонятночто написал. кодировка критична в некоторых функциях, в некоторых нет..
 
Назад
Сверху