Разработка сайта для Вашего бизнеса. Веб дизайн. Дизайн логотипа, фирменного стиля, рекламная фотография . Комплексный рекламный креатив.

Ralex. We do the work.
На рынке с 1999го года. Средняя ценовая категория. Ориентация на эффективность решений.
Ознакомтесь с нашим портфолио
Узнайте больше о услугах
Свяжитесь с нами:
E-mail: [email protected]
Tel: (044) 587 - 84 - 78
Custom web design & дизайн и разработка сайта "под ключ"
Креативный, эффективный дизайн. Система управления сайтом (СУС).
Custom flexible разработка систем электронной коммерции
Система e-commerce разрабатывается под индивидуальные потребности. Гибкая функциональность.
Search Engine Optimzation & оптимизация под поисковые системы (SEO)
Постоянная оптимизация и мониторинг сайта в поисковых системах. Достигаем результата быстро и эффективно
Custom logo design & дизайн логотипа и фирменного стиля
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.
профессиональная рекламная фотография
креативно, смело, качественно
Custom logo design & рекламный креатив. дизайн рекламы
Многолетний опыт. Огромное портфолио. Уникальное предложение и цена.

Парсинг XML за допомогою PHP скрипта

Наша взаимовыгодная связь https://banwar.org/

На сьогоднішній день відправлення даних в форматі XML отримала дуже широке поширення. Взяти хоча б RSS стрічки. Переоцінити їх значення дуже складно, але ж по-суті це звичайні XML файли з даними.

Основна перевага цього способу передачі даних в тому, що можна з мінімальними зусиллями написати обробник даних і використовувати їх у своїх додатках. Наприклад, робота практично всіх змішання кольорів (mashup) так чи інакше, пов'язана з використанням цього формату.

У цій статті я постараюся показати, що працювати з форматом XML дійсно не складно, а користь від його використання величезна.

Припустимо у нас є конкретне завдання. Потрібно показувати відомості про погоду на своєму сайті.

Ясно, що наймати людину, яка буде слухати прогнози погоди і оновлювати дані зовсім не цікаво. Тим більше, що існують служби, які надають цю інформацію.

наприклад, gismeteo.ua . Ця служба надає готові інформери і XML файли з даними для кожного міста.

Підключити інформер не складніше ніж звичайний банер, тобто потрібно додати їх HTML код на сторінку. Але використання XML даних дає ряд переваг.

По-перше, ви зможете показати дані в тому вигляді, який більше відповідає дизайну сайту.

По-друге, такі дані можна легко зберегти і показувати історію зміни погоди за якийсь період, порівнювати дані по містах і т.д. Варіантів тут маса.

Тепер розберемо, як отримати і обробити ці дані за допомогою PHP .

Перш за все, потрібно чітко уявляти структуру даних. Для цього заходимо на цю сторінку і читаємо опис.

Тут я приведу тільки його фрагмент.

TOWN інформація про пункт прогнозування:
- index унікальний п'ятизначний код міста
- sname закодовану назву міста
- latitude широта в цілих градусах
- longitude довгота в цілих градусах
FORECAST інформація про термін прогнозування:
- day, month, year дата, на яку складений прогноз в даному блоці
- hour місцевий час, на яку складено прогноз
- tod час доби, для якого складено прогноз: 0 - ніч 1 - ранок, 2 - день, 3 - вечір
- weekday день тижня, 1 - неділя, 2 - понеділок, і т.д.
- predict завчасність прогнозу в годинах
TEMPERATURE температура повітря, в градусах Цельсія

Жирним шрифтом виділені назви XML елементів, а курсивом - назви їх атрибутів.

Скорочений фрагмент XML файлу виглядає так:

<MMWEATHER> <REPORT type = "frc3"> <TOWN index = "33345" sname = "% CA% E8% E5% E2" latitude = "50" longitude = "30"> <FORECAST day = "14" month = "6" year = "2008" hour = "21" tod = "3" predict = "18" weekday = "7"> <PHENOMENA cloudiness = "3" precipitation = "4" rpower = "1" spower = "0 "/> <PRESSURE max =" 739 "min =" 737 "/> <TEMPERATURE max =" 21 "min =" 19 "/> <WIND min =" 2 "max =" 5 "direction =" 7 "/> <RELWET max = "91" min = "86" /> <HEAT min = "19" max = "21" /> </ FORECAST> </ TOWN> </ REPORT> </ MMWEATHER>

Як бачите дані досить легко прочитати навіть візуально.

Переходимо до обробки. Для формату XML існує безліч бібліотек, які дозволяють отримувати дані за допомогою всього декількох рядків коду. Ми використовуємо стандартну бібліотеку PHP .

Принцип її роботи досить простий. Ви створюєте парсер (обробник), передаєте йому дані в форматі XML і встановлюєте функції-обробники. Після цього запускаєте обробку. Парсер переглядає дані і викликає функції-обробники для кожного знайденого елемента (якщо вони встановлені, звичайно).

Тепер подивимося, як може виглядати такий скрипт.

&lt;? Php $ res = ''; function startElement ($ parser, $ name, $ attrs) {global $ res; switch ($ name) {case 'TOWN': $ res. = 'Місто -'; $ Res. = '<Strong>'. Mb_convert_encoding (urldecode ($ attrs [ 'SNAME']), 'UTF-8', 'windows-1251'). '</ Strong> <br />'; $ Res. = 'Широта -'. $ Attrs [ 'LATITUDE']. ' градусів <br /> '; $ Res. = 'Довгота -'. $ Attrs [ 'LONGITUDE']. ' градусів <br /> '; break; case 'FORECAST': $ res. = 'Температура'. $ attrs [ 'DAY']. '.'. $ attrs [ 'MONTH']. '.'. $ Attrs [ 'YEAR']. ' в '. $ attrs [' HOUR '] .'- 00 буде від'; break; case 'TEMPERATURE': $ res. = '<strong>'. $ attrs [ 'MIN']. '° </ strong> до <strong>'. $ Attrs [ 'MAX']. '° </ strong> <br />'; break; }} Function endElement ($ parser, $ name) {} $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_URL, 'http://informer.gismeteo.ua/xml/33345_1.xml'); curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_TIMEOUT, 30); curl_setopt ($ ch, CURLOPT_HEADER, 0); curl_setopt ($ ch, CURLOPT_PROXYPORT, 8080); curl_setopt ($ ch, CURLOPT_PROXY, '192.168.0.1'); $ Data = curl_exec ($ ch); curl_close ($ ch); $ XMLparser = xml_parser_create (); xml_set_element_handler ($ XMLparser, 'startElement', 'endElement'); if (! xml_parse ($ XMLparser, $ data)) {die ( 'Помилка обробки даних'); } Xml_parser_free ($ XMLparser); ?> <! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Strict // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns = "http://www.w3.org/1999/xhtml"> <head> <meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" /> <title> Дані від gismeteo </ title> </ head> <body style = "font-family: Verdana, sans-serif"> &lt;? php echo $ res; ?> </ Body> </ html>

Щоб трохи його спростити дані будемо виводити інформацію у вигляді звичайної рядки (змінна $ res).

На початку скрипта ми оголосили дві функції (startElement і endElement). До них ми ще повернемося, а зараз розглянемо отримання даних.

Для цієї мети я використовував бібліотеку cURL (рядки 28-40).

Примітка. Можливо, це і перебір, тому що отримати файл можна за допомогою функції fopen (). Але вона не працює з проксі, і без cURL довелося б використовувати сокети (приклад готового скрипта є в коментарях до цієї статті ).

Загалом, спосіб отримання файлу вибираєте по своєму бажанню, а ми переходимо до обробки.

Для цього за допомогою функції xml_parser_create () створюємо XML парсер (рядок 42) і потім встановлюємо обробники елементів (рядок 43). Оброблювачів у нас два. Перший - startElement буде викликаний, коли парсер знайде відкриває тег. Другий - endElement буде викликаний для кожного закриває тега (цей обробник я привів тільки в якості прикладу, він нічого не робить, і його можна було опустити).

Формування даних здійснює функція startElement. Коли парсер знаходить черговий елемент, він передає їй його назву і масив з атрибутами.

За допомогою оператора switch (рядки 6-23) ми визначаємо, який елемент знайдений і формуємо рядок з даними.

Запуск обробки виконується функцією xml_parse, якій потрібно передати парсер і дані з XML файлу. Ця функція поверне TRUE, якщо обробка пройде без помилок.

Після закінчення роботи з парсером його потрібно видалити за допомогою функції xml_parser_free (рядок 47).

У рядках 48-60 ми формуємо HTML сторінку і виводимо дані про погоду (рядок 57). Результат виконання скрипта показаний на скріншоті.

Як бачите, працювати з парсером не складно, головне правильно написати обробники.

Успіхів!

Lt;?
Php echo $ res; ?
Категории
  • Биология
  • Математика
  • Краеведению
  • Лечебная
  • Наука
  • Физике
  • Природоведение
  • Информатика
  • Новости

  • Новости
    https://banwar.org/
    Наша взаимовыгодная связь https://banwar.org/. Запустив новый сайт, "Пари Матч" обещает своим клиентам незабываемый опыт и возможность выиграть крупные суммы.


    Наши клиенты
    Клиенты

    Быстрая связь

    Тел.: (044) 587-84-78
    E-mail: [email protected]

    Имя:
    E-mail:
    Телефон:
    Вопрос\Комментарий: