Парсинг курсу валют на PHP

12

Від автора: Я хочу продемонструвати кілька способів parsing’а однієї і тієї ж сторінки. У цьому уроці я покажу, як це можна робити за допомогою регулярних виразів. Мета нашого уроку, це спарс курси валют з якогось сайту і вивести їх у себе на сторінці в сайдбарі. Оскільки у нас немає сайту, ми просто виведемо у файлі index.php таблицю з даними про валютах.

Завантажити вихідний код собі на комп’ютер!

По-перше, розберемося з поняттям «Регулярний вираз». Що це і з чим його їдять? Пояснюю.

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

Почнемо

Створимо файл parser.php, а в ньому функцію get_currency($charcode), де $charcode символьне позначення валюти.

function get_currency($chrcode){

Зазначимо, що змінна $xml є рядком, а $data — масивом

$xml = «;
$data = array();

Якщо неможливо отримати вихідний код з запитуваної сторінки, то, відповідно, вивести повідомлення про помилку.

if(!$xml = @file_get_contents(‘kurыs.xml’)){
return false;
}
}

Далі перевіримо змінну $date, вона є масивом.

if(is_array($chrcode)){

Якщо так, то кожен елемент масиву розкласти як ключ=>значення.

foreach($chrcode as $key=>$value){

Далі у функції ми будемо використовувати саме регулярний вираз, про який спочатку уроку йшла мова.

if(preg_match(‘#.*’.$value.’.*(.*).*(.*).*#isU’,
$xml, $matches)

Де $xml це об’єкт, в якому шукати відповідність і $matches – змінна-масив, в якій зберігаються всі знайдені за шаблоном відповідності.

Але ми повинні перевірити це регулярний вираз на відповідність із заданим шаблоном ‘#.*’.$chrcode.’.*(.*).*(.*).*#isU’ Якщо перевірка не проходить, виводимо повідомлення про помилку.

if(preg_match(‘#.*’.$value.’.*(.*).*(.*).*#isU’,
$xml, $matches)){
$data[$value][‘nominal’] = $matches[1];
$data[$value][‘value’] = $matches[2];
}else{
return false;
}

Ну і в кінці цієї гілки умови повернути значення $data;

return $data;

Тепер черга гілки, якщо $data не масив. І знову йде перевірка регулярки і т. д., що було описано вище. Ну і повернути значення $data.

}else{
if(preg_match(‘#.*’.$chrcode.’.*(.*).*(.*).*#isU’,
$xml, $matches)){
$data[$chrcode][‘nominal’] = $matches[1];
$data[$chrcode][‘value’] = $matches[2];
}else{
return false;
}
return $data;
}

А тепер просто створимо змінну поза функції, наприклад $uah та присвоїти їй функцію get_currency(‘UAH’) або масивом get_currency(array(‘UAH’,’CZK’,’SEK’)), де ‘UAH’ символьне позначення української гривні.

І, наприклад, вивести її курс до долара.

Весь файл parser.php:

$value){
if(preg_match(‘#.*’.$value.’.*(.*).*(.*).*#isU’,
$xml, $matches)){
$data[$value][‘nominal’] = $matches[1];
$data[$value][‘value’] = $matches[2];
}else{
return false;
}
}
return $data;
}else{
if(preg_match(‘#.*’.$chrcode.’.*(.*).*(.*).*#isU’,
$xml, $matches)){
$data[$chrcode][‘nominal’] = $matches[1];
$data[$chrcode][‘value’] = $matches[2];
}else{
return false;
}
return $data;
}
}
?>

А тепер саме просте: написати таблицю і засунути в неї дані про валютах.
Index.php

UAH USD AUD
Nominal
Value

При помилку:
Парсинг курсу валют на PHP

І при нормальному виконанні скрипта:

Парсинг курсу валют на PHP

Ось такий вийшов урок з парсингу курсу валют і виведення його на свою сторінку. Сподіваюся, він Вам був корисний.

До наступних зустрічей, шановні читачі!

Якщо є питання, то пишіть в коментарях нижче статті, і я обов’язково відповім!

E-mail: [email protected]

Проект webformyself.com — Як створити свій сайт. Основи самостійного сайтобудування

«Кіберсант-вебмастер» — самий повний курс по сайтостроению в рунеті!

P. S. Хочете опублікувати цікавий тематичний матеріал і заробити? Якщо відповідь «Так», то тисніть сюди.