. Чтение данных из xml документа средствами PHP 5 | Makarou.com - когда сайты превращаются в бизнес

Чтение данных из xml документа средствами PHP 5

Чтение данные из xml документа средствами PHP5Приветствую всех читателей! Сегодня я хочу вам рассказать о чтении данных из xml документа, средствами php 5. В php 5 существует очень интересное и удобное расширение для работы с xml файлами – SimpleXML.

Для того, чтобы произвести с помощью php чтение xml документа нам потребуется всего одна его функция — simplexml_load_file. Эта функция, конвертирует хорошо сформированный xml документ в файл, указазанный в имени файла. Если возникает ошибка во время выполнения, то функция возвращает false.

Если говорить простым языком, то эта функция просто подгружает XML документ как объект, по которому можно будет пройтись циклом foreach.

Синтаксис этой функции выглядит следующим образом:

simplexml_load_file ( string filename [, string class_name [, int options]] )

Как видно, функция принимает всего 1 обязательный параметр – это имя файла. Иногда, получая данные из xml документа, они нам выводятся в неправильной кодировке (кракозяблы, иероглифы и другие инородные слова). Это связано с тем что, xml документ по умолчанию работает с кодировкой – utf-8. Для решения этой проблемы я написал функцию, которая конвертирует  данные из utf-8 кодировки в windows – 1251 и соответственно наоборот.

Вот код этой функции:

function utf_win($str, $type){
static $co = '';
if (!is_array($co))
{
$co = array();
for ($x=128; $x <= 143; $x++){
$co['utf'][] = chr(209) . chr($x);
$co['win'][] = chr($x + 112);
}
for ($x=144; $x<= 191; $x++){
$co['utf'][] = chr(208) . chr($x);
$co['win'][] = chr($x + 48);
}
$co['utf'][] = chr(208) . chr(129);
$co['win'][] = chr(168);
$co['utf'][] = chr(209) . chr(145);
$co['win'][] = chr(184);
}
if ($type == 'w'){
return str_replace($co['utf'], $co['win'], $str);
}
elseif ($type == 'u'){
return str_replace($co['win'], $co['utf'], $str);
}
else
{
return $str;
}
}

Его вы можете сохранить в отдельный файл, и подключать там, где нужно, либо писать его всегда и везде где нужно. Первый параметр – строка, которую нужно перевести. Второй параметр определяет, в какую кодировку нужно перевести (w – в windows-1251, u – utf-8).

Теперь рассмотрим небольшой пример:

XML документ:

<?xml version="1.0" encoding="windows-1251"?>
<sort>
<sor><id>0</id><name>Имя-1</name></sor>
<sor><id>1</id><name>Имя-2</name></sor>
<sor><id>2</id><name>Имя-3</name></sor>
<sor><id>3</id><name>Имя-4</name></sor>
<sor><id>4</id><name>Имя-5</name></sor>
</sort>

PHP скрипт:

/*подключаем xml файл*/
$xml1= simplexml_load_file("./name.xml");
/*функция перекодировки*/
function utf_win($str, $type){
static $co = '';
if (!is_array($co))
{
$co = array();
for ($x=128; $x <= 143; $x++){
$co['utf'][] = chr(209) . chr($x);
$co['win'][] = chr($x + 112);
}
for ($x=144; $x<= 191; $x++){
$co['utf'][] = chr(208) . chr($x);
$co['win'][] = chr($x + 48);
}
$co['utf'][] = chr(208) . chr(129);
$co['win'][] = chr(168);
$co['utf'][] = chr(209) . chr(145);
$co['win'][] = chr(184);
}
if ($type == 'w'){
return str_replace($co['utf'], $co['win'], $str);
}
elseif ($type == 'u'){
return str_replace($co['win'], $co['utf'], $str);
}
else
{
return $str;
}
}
/*проходим циклом по xml документу*/
foreach ($xml1->sor as $sort){
echo'ID:'.$sort->id.' Имя:'.utf_win($sort->name, "w").'<BR>';
}

Как видно из примера, ничего сложного нет в работе с данной функцией. На сегодня это все, в следующих постах будет продолжение по данному расширению. ;)

Постовой

Беспроводная гарнитура jabra пользуется широким спросом среди потребителей, ведь она соответствует соотношению цена и качество. Бывает, что техническим причинам она не может нормально функционировать и тогда ремонт гарнитуры jabra будет единственным способом привести ее в рабочее состояние, больше на http://remobil.ru/brand/bluetooth-%E3%E0%F0%ED%E8%F2%F3%F0%FB/jabra-sp200/.

php

Понравился пост? добавь его к себе в закладки:
Хочешь быть всегда в курсе обновлений блога? подписывайся через:
фото проституток новосибирска