<?php
// [1- Скачиваем файл
// Создаем поток
$opts = array(
'http' => array(
'method' => 'GET',
'timeout' => 10,
),
);
$context = stream_context_create($opts);
// Открываем файл с помощью установленных выше HTTP-заголовков
$page_content = file_get_contents('http://lubematch.shell.com/ru/ru/equipment/100_2_8i_avant_001755', false, $context);
// -1]
// [2- Парсим данные
// [3- Строим DOM
// по сути - отключаем вывод ошибок валидации
libxml_use_internal_errors(true);
$page_dom = new \DOMDocument();
$page_dom->strictErrorChecking = false;
$page_dom->preserveWhiteSpace = false;
$page_dom->validateOnParse = true;
$page_dom = new \DOMDocument();
// [4- loadHTML не дает использовать utf-8, делаем хаком http://php.net/manual/en/domdocument.loadhtml.php#95251
$page_dom->loadHTML('<?xml encoding="UTF-8">' . $page_content);
foreach ($page_dom->childNodes as $node) {
if ($node->nodeType == XML_PI_NODE) {
$page_dom->removeChild($node);
}
}
$page_dom->encoding = 'UTF-8';
// -4]
$page_xpath = new \DOMXPath($page_dom);
// -3]
// Вытаскиваем Standard
$param_1 = $page_xpath->query('//table[@id="recommendation"]//tr[2]/th')->item(0)->nodeValue;
// Вытаскиваем Spirax S4 ATF HDX
$param_2 = $page_xpath->query('//table[@id="recommendation"]//tr[5]/td[1]')->item(0)->nodeValue;
// -2]
var_dump($param_1, $param_2);
Если я не хочу что бы заголовок Content-Length шел 2 раза, я могу убрать из массива $headers добавление заголовка, но тогда это не будет работать на Winows версией.
if (PHP_OS != 'Linux) {
$headers[] = 'Content-Length: '.$file_size;
}