Периодически нужно парсить YML файлы и, например, формировать таблицу изображений товаров. Также выводить каких картинок на сайт не хватает.
Скрипт для парсинга YML
31.05.2018
<?php
ini_set('display_errors', '1');
error_reporting(2047);
function checkUrl($sUrl)
{
$oRet = new stdClass();
$oRet->status = 'error';
$oRet->result = '';
$oRet->code = 0;
$aOptions = array (
CURLOPT_URL => $sUrl,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 45,
CURLOPT_VERBOSE => 0,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
);
$ch = curl_init();
curl_setopt_array($ch, $aOptions);
$response = curl_exec($ch);
if ($response)
{
$oRet->status = 'ok';
//$oRet->result = $response;
//$oRet->result = json_decode($oRet->result, TRUE);
}
else
{
$oRet->status = 'error';
$oRet->result = 'Curl error: ' . curl_error($ch);
}
$oRet->code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $oRet;
}
$oXml = simplexml_load_file('https://oddler.ru/yml/');
foreach($oXml->shop->offers->offer as $oOffer)
{
$sPicUrl = $oOffer->picture;
$oRes = checkUrl($sPicUrl);
if($oRes->code != 200)
{
echo '<b>'.$sPicUrl.'</b><br />';
echo '<a target="_blank" href="'.$oOffer->url.'">'.$oOffer->name.'</a><br />';
}
else
{
echo '<b>Error pic url: "'.$sPicUrl.'"</b><br />';
}
echo '<hr />';
}
Вместо CURL, можно использовать get_headers:
$headers = get_headers('http://...');
$headers = explode(' ',$headers [0]);
if ($headers [1] == 200) {
// OK
} else {
// Error
}