// Настройки
$url = 'http://ratings.fide.com/top.phtml?list=men'; //URL для извлечения данных
$start = '<div id="main-col">'; //С чего начать
$end = '<span class="article_separator">'; //Чем закончить
$replacements = array ( //Что на что заменять перед показом
'/top_files.phtml' => 'http://ratings.fide.com/top_files.phtml',
'<b>Rank</b>' => '<b>Место</b>',
'<b>Name</b>' => '<b>Имя</b>',
'<b>Title</b>' => '<b>Титул</b>',
'<b>Country</b>' => '<b>Страна</b>',
'<b>Rating</b>' => '<b>Рейтинг</b>',
'<b>Games</b>' => '<b>Игры</b>',
'<b>B-Year</b>' => '<b>Возраст</b>'
);
// Код
function process($s,$start,$end,$include) {
$s1=strpos ($s,$start);
$s2=strpos ($s,$end);
if (!is_integer($s1)) { return "Не найден начальный сегмент: ".htmlspecialchars($start); }
if (!is_integer($s2)) { return "Не найден конечный сегмент: ".htmlspecialchars($end); }
if ($s1>$s2) { return "Конечный сегмент предшествует начальному"; }
if ($include) { //Включать начало и конец
return substr ($s,$s1,$s2-$s1+strlen($end));
}
else { // Исключить начало и конец
$s1+=strlen($start);
return substr ($s,$s1,$s2-$s1);
}
}
$string = process (file_get_contents($url),$start,$end,false);
echo str_replace (array_keys($replacements),array_values($replacements),$string);
Еще одним способом, спарсить любую информацию с сайта, будь то погода, курсы валют или цена товара реализуем с помощью следующего кода.
function Parse($p1, $p2, $p3) {
$num1 = strpos($p1, $p2);
if ($num1 === false) return 0;
$num2 = substr($p1, $num1);
return strip_tags(substr($num2, 0, strpos($num2, $p3)));
}
$String = file_get_contents('https://obninsksite.ru/blog/php-scripts/php-parser');
echo Parse($String, '<p>', '</p>');
Наша функция Parse
имеет 3 параметра. Первый параметр p1
– строка, в которой будет происходить поиск нужной информации. Параметр p2
– означает первый уникальный элемент для начала поиска. Параметр p3
– означает второй элемент для конца поиска.
Встроенная PHP функция file_get_contents()
– считывает содержимое всей веб страницы.