Доброго времени суток! Есть xml с русскими тегами в utf-16, пытаюсь разобрать с помощью SimpleXML Есессено сперва прочел хелп и вроде бы все просто, но как работать с русскими тегами не пойму. Читал вот это http://www.php.ru/manual/ref.simplexml.html чтобы разобрать xml нужно обрщаться к его нодам $xml->movie[0]->plot Но как я могу обратится к нодам если они в utf-16 и на русском? К примеру у меня вот такой xml <Товар> <Марка>Toyota</Марка> <Модель>Corolla</Модель> <Год>2009</Год> </Товар> Xml выдется только на русском, перевести на английский нет возможности это однозначно.
лучше не делай кирилицой, это делать себе в ущерб имхо... я тебе вырежу код с книги - php в Подлиннике, может поможет unicode.ini PHP: <?php ## Функции перевода строк из кодировки WINDOWS-1251 в UTF-8 и обратно setlocale(LC_ALL,"ru_RU.CP1251"); //Стандартная кодировка документа define('Encoding','WINDOWS-1251'); //Заголовок XML-документа define ('XMLHead',"<?xml version='1.0' encoding='".Encoding."'?>"); /** * Перекодировать строку в кодировку UTF-8 * * @param string str перекодируемая строка * @param string encode исходная кодировка (по умолчанию WINDOWS-1251) * * @return перекодированная строка в кодировке UTF-8 */ function utf8encode($str,$encode=Encoding) { return iconv($encode,'UTF-8',$str); } /** * Перекодировать строку из кодировки UTF-8 * * @param string str перекодируемая строка в кодировке UTF-8 * @param string encode целевая кодировка (по умолчанию WINDOWS-1251) * * @return перекодированная строка в указанной кодировке */ function utf8decode($str,$encode=Encoding) { return iconv('UTF-8',$encode,$str); } ?> index.php PHP: <?php include 'unicode.inc'; $xml="<?xml version='1.0' encoding='UTF-8'?> <программа> <MTV>Канал MTV</MTV> <МузТВ>Канал МузТВ</МузТВ> </программа>"; $prog=simplexml_load_string($xml); $mtv=$prog->MTV; echo utf8decode($mtv)."\r\n"; $mustv=$prog->МузТВ; echo utf8decode($mustv)."\r\n"; ?> не гарантирую работу примера т.к. в исходных кодах кодировка другая, а когда я вписывал в форум я ее изменил иба тута каракули ну если захочешь разобраться скачаешь оригинальные исходники....
Исходник в UTF-8 Так мне разбор тегов делать на русском чтоли? вот так: $mustv=$prog->МузТВ; уже попробывал как написал alexeurodnepr все нормально, только на тег МузТВ у меня ноль эмоций. Выводит только $mtv=$prog->MTV; Как мне к русским тегам обращаться??? Пока писал, мне тут подсказали. Вобщем я переведу все русские теги в английские с помощью str_replace и уже разберу xml. Правильно мне подсказали?
bizovo Сорри, невнимательно вчитался. PHP пока не позволяет русских имен переменных, поэтому либо действительно str_replace, либо использовать DOM.
$mustv=$prog->МузТВ; echo utf8decode($mustv)."\r\n"; это как бы решение, вот на тебе исходник той фигни шо я выложил, только там другая какае-то кодировка... вообщем работать будет, парсит нормально... ЗЫ - хотелось бы, что б админы форума вставили сюда фишку для закачки файлов, было б очень удобно вставлять то рисунки, толи код в архивах... а то лазить по разных сайтах генерить ссылки для скачки напряжно))) спс