- Парс дані для інформера курсу валют
- Кешіруем і підключаємо інформер курсу валют на сайті WordPress
- Виводимо інформер курсу валют в шаблоні WordPress
Наша взаимовыгодная связь https://banwar.org/
Зробити інформер курсу валют для свого сайту - дуже елементарна задача. Тим часом, деяким вебмайстрам вона здається занадто трудомісткою і вони обмежуються пошуком готових інформерів на фінансових порталах. Такі інформери валют, природно, барвисті і інформативні, але в 99.9% випадків вони містять посилання на сайт-джерело. Як бути, якщо ви не хочете на своєму сайті разом з інформером курсу валют розміщувати сторонніх посилань, логотипів або торгових марок? Правильно: зробити свій інформер! Цим і займемося!
Парс дані для інформера курсу валют
Як завжди, обмежуємося найпростішим кодом і шукаємо найпростіший шлях. Приклад самого елементарного парсеру інформації з інших сайтів я приводив в статті "Парс контент до себе на сайт" . Цей код і будемо використовувати для своїх цілей (в даній статті він буде трохи модифікований для більшої функціональності). Для початку нам потрібно знайти сайт-донор. Такий сайт повинен задовольняти деяким вимогам, зокрема:
- Сайт щодня повинен оновлювати інформацію про курсах валют;
- Така інформація повинна розміщуватися на постійному адресі сайту (статичний урл);
- Таку інформацію можна бачити в вихідному коді сторінки (режим html).
Таких сайтів в інтернеті не так і мало, Гугль в допомогу. У нашому прикладі (ми будемо робити інформер курсу валют від Національного Банку України - НБУ), ми обмежимося полегшеної wap версією сайту одного з мобільних операторів України, а саме - http://xwap.com.ua/srv/curr/index.php ? mu = xhtml & s = djuice & l = ua & a = 1. Відкривши посилання в браузері, ми побачимо, що курс валют від НБУ на поточний число відображається в самому верху сторінки. Отже, беремося аналізувати довільні ці рядки:
<? Php $ content = file_get_contents ( 'http://xwap.com.ua/srv/curr/index.php?mu=xhtml&s=djuice&l=ua&a=1'); // сторінка донор // Визначаємо позицію рядка, до якої потрібно все відрізати (використовуємо функцію strpos ()). $ Pos = strpos ($ content, '& lt; </a> & nbsp;'); / * Отрезаем все, що йде до потрібної нам позиції (функція substr в даному випадку приймає два параметри: рядок для обробки і // номер позиції. Функція поверне рядок, ПОЧИНАЮЧИ з вказаної позиції) * / $ content = substr ($ content, $ pos); // Точно таким же чином знаходимо позицію другого рядка $ pos = strpos ($ content, '<p> <b> ГОТІВКОВІЙ: </ b> </ p>'); // Отрезаем потрібну кількість символів від нульового $ content = substr ($ content, 0, $ pos); // Чистимо сміття $ content = str_replace ( '& lt; </a> & nbsp;', '', $ content); $ Content = str_replace ( '<br/>', '|', $ content); $ Content = str_replace ( '<p>', '', $ content); $ Content = str_replace ( '</ p>', '', $ content); echo $ content; // виводимо результат?>
Якщо цей код помістити в файл, скажімо під ім'ям nbu.php і запустити його на своєму сайті http: // ваш сайт.ру / nbu.php то у вікні браузера ми отримаємо рядок, виду (що є курсом валют від НБУ на зазначену дату ):
01.08.2014 НБУ: USD: 12.0972 | EUR: 16.2115 | RUR: 0.3386 | GBP: 20.4768 | JPY: 0.0118
Власне, основне завдання зроблена, дані отримані, залишилося коректно і правильно їх використовувати.
Кешіруем і підключаємо інформер курсу валют на сайті WordPress
Оскільки захоплююся WordPress, в своєму прикладі наведу порядок виведення інформера на цій платформі. В принципі, в коді нічого складного немає, його можете аналогічним способом підключити де завгодно, де працює php. Але перш за все, ми повинні кешувати спарсенние дані. І це дуже суттєвий момент!
Кожен раз звертаючись до сторінці http: // ваш сайт.ру / nbu.php скрипт звертається до віддаленого сайту. Таким чином, якщо 1000 людей відкриють Ваш сайт (на якому буде виводиться інформер з курсом валют), це створить тисячі запитів до сайту донору. Донору це не сподобається і ваш ip сайту можуть заблокувати і скрипт з вашого сайту не зможе більше отримувати дані. Тому і придумали таку річ як "кешування".
Кешування - це збереження деякої змінної PHP в кеші з подальшим її витяг звідти. Це простий і ефективний спосіб підвищити продуктивність веб-додатки.
Як це буде працювати в нашому випадку? Скрипт отримає дані з віддаленого сайту і збереже їх в файл на нашому сайті. Дані в цьому файлі будуть зберігається деякий час і через певний період оновлюватися. Таким чином, дані про курс валют користувач сайту буде отримувати з цього тимчасового файлу на нашому сайті, а не безпосередньо від сайту-донора. Тобто, наш скрипт буде звертатися за інформацією до віддаленого сайту, скажімо, 1-2 рази на добу, що виключає блокування або підозри в якихось махінаціях з нашого боку.
Нам потрібно лише додати кілька рядків спочатку і наприкінці вищевказаного скрипта. У повній комплектації це буде виглядати наступним чином:
<? Php $ cache_lifetime = 3600; // в секундах, 3600 = 1 годину $ cache_file = "cache / kurs.html"; // в папці cache буде створюватися тимчасовий файл kurs.html $ cache_content = false; if (file_exists ($ cache_file)) {$ cache_modified = time () - @filemtime ($ cache_file); if ($ cache_modified <$ cache_lifetime) {$ cache_content = file_get_contents ($ cache_file); }} $ Content = file_get_contents ( 'http://xwap.com.ua/srv/curr/index.php?mu=xhtml&s=djuice&l=ua&a=1'); // сторінка донор // Визначаємо позицію рядка, до якої потрібно все відрізати (використовуємо функцію strpos ()). $ Pos = strpos ($ content, '& lt; </a> & nbsp;'); / * Отрезаем все, що йде до потрібної нам позиції (функція substr в даному випадку приймає два параметри: рядок для обробки і // номер позиції. Функція поверне рядок, ПОЧИНАЮЧИ з вказаної позиції) * / $ content = substr ($ content, $ pos); // Точно таким же чином знаходимо позицію другого рядка $ pos = strpos ($ content, '<p> <b> ГОТІВКОВІЙ: </ b> </ p>'); // Отрезаем потрібну кількість символів від нульового $ content = substr ($ content, 0, $ pos); // Чистимо сміття $ content = str_replace ( '& lt; </a> & nbsp;', '', $ content); $ Content = str_replace ( '<br/>', '|', $ content); $ Content = str_replace ( '<p>', '', $ content); $ Content = str_replace ( '</ p>', '', $ content); if ($ cache_content === false) {ob_start (); $ Cache_content = $ content; ob_end_clean (); $ Fp = @fopen ($ cache_file, "w"); if ($ fp) {@fwrite ($ fp, $ cache_content); @fclose ($ fp); }} Echo $ cache_content; ?>
Зверніть увагу на перші рядки: це параметри часу кешування і шлях до тимчасового файлу. Власне і все настройки роботи скрипта кешування. Не забуваємо зберегти код у файлі під ім'ям nbu.php.
Виводимо інформер курсу валют в шаблоні WordPress
Скрипт повністю готовий! Підключити його на сайті дуже просто.
1. Створюємо в корені сайту папку cache (права доступу - 755);
2. Відкриваємо папку з назвою використовуваного на сайті шаблону WordPress і копіюємо туди файл nbu.php
2. У тій же папці прописуємо рядок коду в тій частині шаблону, в якій хочемо виводити дані. Найчастіше це буде шапка (верхня частина сайту), тому відкриваємо header.php і в потрібному місці вставляємо:
<B> курс валют </ b> на <? Php include (TEMPLATEPATH. '/Nbu.php'); ?> </ P>
Відкриваємо сайт в браузері, перевіряємо роботу нашого інформера курсу валют:
Приклад роботи інформера курсу валют від НБУ
Якщо у Вас не вийшло або щось не виходить, потрібно описувати свою проблему в коментарях!
Як бути, якщо ви не хочете на своєму сайті разом з інформером курсу валют розміщувати сторонніх посилань, логотипів або торгових марок?Php ?
Php?
Як це буде працювати в нашому випадку?
Php?
Php include (TEMPLATEPATH. '/Nbu.php'); ?