Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка simplexml_load_string() 
:(
    Опции темы
hetfield
Дата 3.12.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Добрый день...

Пытаюсь сделать у себя таблицу с курсами валют... Тяну вот отсюда - http://bank-ua.com/index.php?page=export_xml

Но мне выбивает ошибку 
Код

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Unsupported encoding windows-1251
Warning: simplexml_load_string() [function.simplexml-load-string]: <?xml version="1.0" encoding="windows-1251"?>


на строчку $xmlObj = simplexml_load_string($xmlStr);

Далее код:
Код

function objectsIntoArray($arrObjData, $arrSkipIndices = array()) {
    $arrData = array();
   
    // if input is object, convert into array
    if (is_object($arrObjData)) {
        $arrObjData = get_object_vars($arrObjData);
    }
   
    if (is_array($arrObjData)) {
        foreach ($arrObjData as $index => $value) {
            if (is_object($value) || is_array($value)) {
                $value = objectsIntoArray($value, $arrSkipIndices); 
            }
            if (in_array($index, $arrSkipIndices)) {
                continue;
            }
            $arrData[$index] = $value;
        }
    }
    return $arrData;
}

$xmlUrl = "http://bank-ua.com/export/currrate.xml"; 
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj);


if (isset($arrXml)) {
...... 


на локалке все работает. В инете не смог найти решение. 

хелп  )
PM MAIL   Вверх
skyboy
Дата 3.12.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



простейшее решение - переводить xml в utf8
PM MAIL   Вверх
hetfield
Дата 3.12.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Если вот так
Код

$xmlUrl = "http://bank-ua.com/export/currrate.xml";    
$xmlStr = file_get_contents($xmlUrl);

    iconv("windows-1251","UTF-8" , $xmlStr);
    
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj);


то ничего не меняется (


phpinfo();
Код

iconv support    enabled
iconv implementation    libiconv
iconv library version    1.13 



Это сообщение отредактировал(а) hetfield - 3.12.2010, 13:15
PM MAIL   Вверх
skyboy
Дата 3.12.2010, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



надо и encoding="windows-1251" заменить на utf-8.
у меня работает и без перекодирования.
php 5.3.3(Revision: 299424)
PM MAIL   Вверх
hetfield
Дата 3.12.2010, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Цитата

надо и encoding="windows-1251" заменить на utf-8.


Вот, а как я не знаю
PM MAIL   Вверх
umka
Дата 3.12.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 23.1.2004

Репутация: нет
Всего: 0



Это скорее всего глюк libiconv на сервере. Не находит файлик с cp1251.

iconv("windows-1251","utf-8",$xmlStr);
$xmlStr=str_replace('<?xml version="1.0" encoding="windows-1251"?>','<?xml version="1.0" encoding="utf-8"?>',$xmlStr);

а дальше парсим.
PM MAIL WWW   Вверх
hetfield
Дата 3.12.2010, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Код

$xmlUrl = "http://bank-ua.com/export/currrate.xml";    
$xmlStr = file_get_contents($xmlUrl);
    
iconv("windows-1251","utf-8",$xmlStr);
$xmlStr=str_replace('<?xml version="1.0" encoding="windows-1251"?>','<?xml version="1.0" encoding="utf-8"?>',$xmlStr);
    
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj);


теперь вот такое говорит:
Код

Entity: line 10: parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE0 0xE2 0xF1 0xF2


В гугле нашел что это из-за того, что файл сохранён не в UTF-8 

Ну вроде же iconv делаю

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0470 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.