Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: simplexml_load_file() не срабатывает.  (Прочитано 9949 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
simplexml_load_file() не срабатывает.
« : 23 Октября 2010, 13:22:28 »
Ошибка следующая:

Цитировать
<channel>
      <title>Мой RSS</title>
      <description>Фи in /home/userhome/scripts/find.php on line 16
bool(false)

Warning: Invalid argument supplied for foreach() in /home/userhome/scripts/find.php on line 21

кодировка файла utf-8.

line16 -> $rss = simplexml_load_file("/home/userhome/rss.txt")

что не нравится ему?

Меняю кодировку
$url = iconv("cp1251","utf8","/home/userhome/rss.txt");
Цитировать
Warning: simplexml_load_file(): /home/userhome/rss.txt:450: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xD0 0x3C 0x73 0x70 in /home/userhome/scripts/find.php on line 6

Warning: simplexml_load_file(): �кты <br />- Оригинальное музыкальное оформлен in /home/userhome/scripts/find.php on line 6

Warning: simplexml_load_file():                                                                                ^ in /home/userhome/scripts/find.php on line 6

Warning: Invalid argument supplied for foreach() in /home/userhome/scripts/find.php on line 10

в файле rss.txt в строке 450 символ  �, может в нем дело ?
можно както этот символ игнорировать ?
или как заставить simplexml_load_file() работать?
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #1 : 23 Октября 2010, 13:28:39 »
Меняю кодировку
$url = iconv("cp1251","utf8","/home/userhome/rss.txt");
Кодировку чего? Строчки "/home/userhome/rss.txt"? Зачем это тебе?

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: simplexml_load_file() не срабатывает.
« Ответ #2 : 23 Октября 2010, 13:39:22 »
кодировку файла rss.txt, ведь simplexml_load_file нужен utf8
ошибку свою понял, сначала
$url = file_get_contents("/home/userhome/rss.txt");
а патом уже iconv("cp1251","utf8", $url);

я не понимаю почему не работает simplexml_load_file
« Последнее редактирование: 23 Октября 2010, 13:42:32 от kostrukov »
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #3 : 23 Октября 2010, 13:44:04 »
Всё зависит от самого файла rss.txt

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: simplexml_load_file() не срабатывает.
« Ответ #4 : 23 Октября 2010, 13:56:41 »
вот Ошибка:

Цитировать
$ php ~/scripts/find.php

Warning: simplexml_load_file(): /home/usehome/rss.txt:458: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xD0 0x3C 0x73 0x70 in /home/userhome/scripts/find.php on line 7

Warning: simplexml_load_file(): �кты <br />- Оригинальное музыкальное оформлен in /home/userhome/scripts/find.php on line 7

Warning: simplexml_load_file():                                                                                ^ in /home/userhome/scripts/find.php on line 7

Warning: Invalid argument supplied for foreach() in /home/userhome/scripts/find.php on line 11

вот кусок из файла, в котором ошибка:

Цитировать
Около 100 уникальных локаций <br />- Современный 3D звук и спецэффекты <br />- Оригинальное музыкальное оформлен�<span style="color: blue;"><b>Системные требования:</b></span><br />

как это обойти? можно както удалять такие символы, и потом скармливать в simplexml
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #5 : 23 Октября 2010, 14:01:21 »
Тут куском файла не обойтись. Прикрепляй полный.

Оффлайн arrecck

  • Старожил
  • *
  • Сообщений: 1725
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #6 : 23 Октября 2010, 14:05:24 »
почему у тебя xml (html) в txt файле?
смотри сам файл, возможно двойная кодировка

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: simplexml_load_file() не срабатывает.
« Ответ #7 : 23 Октября 2010, 14:07:54 »
вот файл

почему у тебя xml (html) в txt файле?
смотри сам файл, возможно двойная кодировка

без разницы с каким расширением файл. сохранил только для того, чтобы разобраться проблемой. а не запрашивать постоянно файл с сервера

Пользователь решил продолжить мысль 23 Октября 2010, 14:12:28:
file -i ~/rss.txt
/home/userhome/rss.txt: text/xml
« Последнее редактирование: 23 Октября 2010, 14:12:28 от kostrukov »
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #8 : 23 Октября 2010, 14:19:55 »
У меня грузит. Кодировка файла и так utf8 и тем более вся инфа в нём идет в CDATA, так что ничего перекодировать не надо. Ищи проблемы в другом месте.

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: simplexml_load_file() не срабатывает.
« Ответ #9 : 23 Октября 2010, 15:49:21 »
Цитировать
Оригинальное музыкальное оформлен�

и на это не ругнулся?
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #10 : 23 Октября 2010, 17:06:14 »
Неа, не ругнулся. Я только этой функцией грузанул, разбор далее не пытался сделать...

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: simplexml_load_file() не срабатывает.
« Ответ #11 : 23 Октября 2010, 18:47:18 »
получается проблема в сервере.
зашел сейчас браузером, посмотреть что выдает
вот ошибка:
This page contains the following errors:

error on line 650 at column 325: Encoding error
Below is a rendering of the page up to the first error.

сохранил в файл, действительно отрабатывает.

вернусь к вопросу, возможно ли средствами php исключить этот символ, и только потом передавать на разбор парсеру
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #12 : 24 Октября 2010, 00:17:14 »
Да что то мне кажется намудрил ты... Беру твой приатаченный файл и простой скрипт:
<?
$xml = simplexml_load_file("/home/mamon/Desktop/rss.xml");
print_r($xml);
?>

Получаю на выходе:
(Нажмите, чтобы показать/скрыть)

Неужели на сервере этот самый скрипт ругается? Или ты при заливке на сервер файл перекодируешь в cp1251?

Оффлайн kostryukov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1588
  • everybody lies
    • Просмотр профиля
    • kostryukov.net
Re: simplexml_load_file() не срабатывает.
« Ответ #13 : 24 Октября 2010, 00:38:26 »
я с сервера файл получаю,
если его сохранить, то отрабатывает.
если указывать напрямую simplexml_load_file("http://localhost/rss.xml");
то ругается
у меня можно спросить=)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: simplexml_load_file() не срабатывает.
« Ответ #14 : 24 Октября 2010, 01:04:25 »
Ого, ты к нему через http обращаешься?   :o

Рассмотри тот вариант, что веб сервер его отдаёт в неправильной кодировке или http клиент php портит содержимое. Попробуй через curl тянуть его.

 

Страница сгенерирована за 0.019 секунд. Запросов: 21.