Периодически нужно парсить YML файлы и, например, формировать таблицу изображений товаров. Также выводить каких картинок на сайт не хватает.
Скрипт для парсинга YML
31.05.2018
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <?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 ; } 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:
1 2 3 4 5 6 7 | $headers = explode ( ' ' , $headers [0]); if ( $headers [1] == 200) { // OK } else { // Error } |