Php спирит для сравнения товаров в двух YML (xml)

21.01.2024

После переделки скрипта для генерации XML с товарами возникла задача, нужно было сравнить результат старого и нового генератора.

Пример скрипта который проверяем, что в двух XML выгрузках в формате Яндекс Марета (YML), одинаковые товары:

 
<?php
ini_set('display_errors', '1');
error_reporting(2047);

function getAllOffersIds($sFileName) {
    $i = 0;
    $aIds = [];
    $oXml = simplexml_load_file($sFileName);
    $iCount = count($oXml->shop->offers->offer);
    foreach($oXml->shop->offers->offer as $oOffer) {
        $aAttr = $oOffer->attributes();
        $aIds[] = (string) $aAttr['id'];
        $i++;
        echo $sFileName. ': ' . $i . '/' . $iCount . PHP_EOL;
    }
    return $aIds;
}

// Start:
$sFileName1 = 'search';
$sFileName2 = 'search_new';

$sXMLFileName1 = $sFileName1 . '.xml';
$sXMLFileName2 = $sFileName2 . '.xml';

unlink($sXMLFileName1);
unlink($sXMLFileName2);

exec('wget https://www.TEST.ru/export/'.$sXMLFileName1);
exec('wget https://www.TEST.ru/export/'.$sXMLFileName2);

$aSearchIds = getAllOffersIds($sXMLFileName1);
$aSearchNewIds = getAllOffersIds($sXMLFileName2);

$aFullDiff = array_merge(array_diff($aSearchIds, $aSearchNewIds), array_diff($aSearchNewIds, $aSearchIds));
print_r($aFullDiff);

//file_put_contents('ids_'.$sFileName1.'.txt', implode("\n", $aSearchIds));
//file_put_contents('ids_'.$sFileName2.'.txt', implode("\n", $aSearchNewIds));


Категории: PHP, Script / Tool
Яндекс.Метрика