PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 8
HDMan Отправлено: 02 Августа, 2012 - 13:47:55 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
Мелкий пишет:
Используйте DOMDocument.
Если знаете, пожалуйста подскажите как это использовать?
HDMan Отправлено: 02 Августа, 2012 - 13:20:32 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
Вопрос остается открытым: "Как определить кодировку файла XML расперсеного в SimpleXML?"
HDMan Отправлено: 02 Августа, 2012 - 13:04:15 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
Мелкий пишет:
Так будет работать с любой известной SimpleXML кодировкой XML-документа и скриптом в UTF-8.
вы для начала попробуйте код
PHP:
скопировать код в буфер обмена
  1.     $xml = simplexml_load_file(rawurlencode('http://www.runcms.ru/modules/news/cache/news.xml'));
  2.     $xml->channel->title='Новое название канала';
  3.     $newxml= $xml->asXML(); \\ и этот файл я уже могу записать или сделать с ним еще чегонибудь
подсказка: исходный xml там в cp1251
Мелкий пишет:
Если с какого-то перепуга ваш скрипт всё ещё не в UTF8 - это, в общем-то, ваши проблемы. SimpleXML работает в UTF8.
если вы не знаете ответа на вопрос "как определить кодировку файла XML расперсеного в SimpleXML", то это не дает право хамить
HDMan Отправлено: 02 Августа, 2012 - 12:47:55 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
Мелкий пишет:

Если исходный XML в cp1251, изменить свойство (используя UTF8), и записать файл обратно - XML будет всё ещё в cp1251 и с корректным cp1251 (если это, конечно, вообще возможно) изменённым свойством.
как узнать посредством PHP в какой кодировке исходный xml?
(Добавление)
Мелкий пишет:
PHP:
скопировать код в буфер обмена
  1. $xml = simplexml_load_file(rawurlencode('http://news.yandex.ru/index.rss'));
  2. $xml->channel->title='Новое название канала';
  3. $newxml= $xml->asXML(); \\ и этот файл я уже могу записать или сделать с ним еще чегонибудь
так будет работать правильно только если кодировка xml и шашего сайта совподают.
если у вас cp1251. а файл на UTF-8. то будут кракозябры.
HDMan Отправлено: 02 Августа, 2012 - 12:45:22 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
короче говоря мне нужен код типа этого:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. $xml = simplexml_load_file(rawurlencode('http://news.yandex.ru/index.rss'));
  3. $code = КакаятоНеизвестнаяМнеФункция($xml);
  4. $xml->channel->title=mb_convert_encoding('Новое название канала', "utf-8", $code);
  5. $newxml= $xml->asXML(); \\ и этот файл я уже могу записать или сделать с ним еще чегонибудь
  6.  

так вот ищу функцию КакаятоНеизвестнаяМнеФункция или метод для работы с классом или объектом, которая позволит узнать в какой кодировке будет создан файл $newxml
HDMan Отправлено: 02 Августа, 2012 - 12:36:50 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
ну так чтобы знать в какой кодировке туда писать надо знать в какой кодировке там данные.

вот два файла
http://www[dot]runcms[dot]ru/modules/news/cache/news[dot]xml
http://news[dot]yandex[dot]ru/index[dot]rss
я их пропускаю через simplexml_load_file
вопрос: в какой кодировке в каждый файл вносить изменения? Как вы это узнали(посредством PHP, а не зрения )?
HDMan Отправлено: 02 Августа, 2012 - 12:24:16 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
Мелкий пишет:
Для чего вам исходная кодировка?
SimpleXML возвращает только UTF8, если XML в другой кодировке объявлен - сам конвертирует.
http://www.php.net/manual/ru/ref.simplexml.php#79258
я знаю что в SimpleXML всегда UTF-8. А вот исходный xml может быть любой.
соответственно если я в объект SimpleXMLElement хочу внести изменение, то мне надо знать в какой кодировке будет xml файл.

для примера можете взять файл в utf
распарсить его через SimpleXML, изменить какой нибудь элемент записав в него данные в кодировке cp1251, и опять верните его в xml.
на выходе получите чушь в измененном элементе.
HDMan Отправлено: 02 Августа, 2012 - 08:05:17 • Тема: Как узнать кодировку SimpleXMLElement • Форум: Кодировки и все смежное

Ответов: 15
Просмотров: 12222
имеем следующий код
PHP:
скопировать код в буфер обмена
  1.  
  2. $xmlstr_win = <<<XML
  3. <?xml version="1.0" encoding="cp1251"?>
  4. <rss version="2.0">
  5.   <channel>
  6.     <title>CHANEL TITLE</title>
  7.     <link>http://site.ru/index.html</link>
  8.     <description>CHANEL DESCRIPTION</description>
  9.     <item>
  10.       <title>ITEM TITLE</title>
  11.       <link>http://site.ru/link.php</link>
  12.       <description>ITEM DESCRIPTION</description>
  13.     </item>
  14.   </channel>
  15. </rss>
  16. XML;
  17.  
  18. $xmlstr_utf = <<<XML
  19. <?xml version="1.0" encoding="utf-8"?>
  20. <rss version="2.0">
  21.   <channel>
  22.     <title>CHANEL TITLE</title>
  23.     <link>http://site.ru/index.html</link>
  24.     <description>CHANEL DESCRIPTION</description>
  25.     <item>
  26.       <title>ITEM TITLE</title>
  27.       <link>http://site.ru/link.php</link>
  28.       <description>ITEM DESCRIPTION</description>
  29.     </item>
  30.   </channel>
  31. </rss>
  32. XML;
  33. $xml_win = simplexml_load_string($xmlstr_win);
  34. $xml_utf = simplexml_load_string($xmlstr_utf);
  35. echo '<h1>Читабельная информация о объектах $xml_win и $xml_utf <br>' ;
  36. echo (print_r($xml_win,true)==print_r($xml_utf,true)) ? 'СОВПОДАЕТ':'РАЗЛИЧАЕТСЯ';
  37. echo '</h1>
  38. WIN<textarea>'.$xml_win->asXML().'</textarea>
  39. UTF<textarea>'.$xml_utf->asXML().'</textarea>
  40. OBJECT<textarea>'.print_r($xml_utf,true).'</textarea>';
  41.  

на выходе получаем
CODE (html):
скопировать код в буфер обмена
  1. <h1>Читабельная информация о объектах $xml_win и $xml_utf <br>СОВПОДАЕТ</h1>
  2. WIN<textarea><?xml version="1.0" encoding="cp1251"?>
  3. <rss version="2.0">
  4.   <channel>
  5.     <title>CHANEL TITLE</title>
  6.     <link>http://site.ru/index.html</link>
  7.     <description>CHANEL DESCRIPTION</description>
  8.     <item>
  9.       <title>ITEM TITLE</title>
  10.       <link>http://site.ru/link.php</link>
  11.       <description>ITEM DESCRIPTION</description>
  12.     </item>
  13.   </channel>
  14. </rss>
  15. </textarea>
  16. UTF<textarea><?xml version="1.0" encoding="utf-8"?>
  17. <rss version="2.0">
  18.   <channel>
  19.     <title>CHANEL TITLE</title>
  20.     <link>http://site.ru/index.html</link>
  21.     <description>CHANEL DESCRIPTION</description>
  22.     <item>
  23.       <title>ITEM TITLE</title>
  24.       <link>http://site.ru/link.php</link>
  25.       <description>ITEM DESCRIPTION</description>
  26.     </item>
  27.   </channel>
  28. </rss>
  29. </textarea>
  30. OBJECT<textarea>SimpleXMLElement Object
  31. (
  32.     [@attributes] => Array
  33.         (
  34.             [version] => 2.0
  35.         )
  36.  
  37.     [channel] => SimpleXMLElement Object
  38.         (
  39.             [title] => CHANEL TITLE
  40.             [link] => http://site.ru/index.html
  41.             [description] => CHANEL DESCRIPTION
  42.             [item] => SimpleXMLElement Object
  43.                 (
  44.                     [title] => ITEM TITLE
  45.                     [link] => http://site.ru/link.php
  46.                     [description] => ITEM DESCRIPTION
  47.                 )
  48.  
  49.         )
  50.  
  51. )
  52. </textarea>

как видите объекты не отличаются, а xml отличается только кодировкой
Вопрос: как определить кодировку файла XML распарсеного в SimpleXML?
(изврат с генерацией xml и уже из него получать кодировку не подходит)

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB