Периодически нужно парсить 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 }