Как из XML выбрать данные только из FORECAST у которого tod="2" Код (Text): $xml = '31510_1.xml'; $rss = simplexml_load_file($xml); foreach ($rss->REPORT->TOWN as $fact) { $temp = $fact->FORECAST->TEMPERATURE['min']; //выводим температуру $tod = $fact->FORECAST['tod']; //выводим время суток } $h = date('G'); $tod1 = ($h > 6) ? 2: 0; echo $tod." _ ".$tod1." _ "; Добавлено спустя 8 минут 32 секунды: Код (Text): <MMWEATHER> <REPORT type="frc3"> <TOWN index="31510" sname="%C1%EB%E0%E3%EE%E2%E5%F9%E5%ED%F1%EA" latitude="50" longitude="127"> <FORECAST day="27" month="05" year="2015" hour="21" tod="3" predict="0" weekday="4"> <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/> <PRESSURE max="742" min="740"/> <TEMPERATURE max="18" min="16"/> <WIND min="1" max="3" direction="4"/> <RELWET max="57" min="55"/> <HEAT min="16" max="18"/> </FORECAST> <FORECAST day="28" month="05" year="2015" hour="03" tod="0" predict="0" weekday="5"> <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/> <PRESSURE max="741" min="739"/> <TEMPERATURE max="15" min="13"/> <WIND min="2" max="4" direction="5"/> <RELWET max="62" min="60"/> <HEAT min="13" max="15"/> </FORECAST> <FORECAST day="28" month="05" year="2015" hour="09" tod="1" predict="0" weekday="5"> <PHENOMENA cloudiness="0" precipitation="10" rpower="0" spower="0"/> <PRESSURE max="740" min="738"/> <TEMPERATURE max="21" min="19"/> <WIND min="1" max="3" direction="4"/> <RELWET max="54" min="52"/> <HEAT min="18" max="20"/> </FORECAST> <FORECAST day="28" month="05" year="2015" hour="15" tod="2" predict="0" weekday="5"> <PHENOMENA cloudiness="1" precipitation="10" rpower="0" spower="0"/> <PRESSURE max="738" min="736"/> <TEMPERATURE max="26" min="24"/> <WIND min="2" max="4" direction="4"/> <RELWET max="33" min="31"/> <HEAT min="23" max="25"/> </FORECAST> </TOWN> </REPORT> </MMWEATHER>
Код (PHP): preg_match("/<forecast[^>]+tod=\"2\"[^>]+>.+?<\/forecast>/is", $xml, $m); echo htmlspecialchars($m[0]);
Код (PHP): <?php $xml = '31510_1.xml'; $rss = simplexml_load_file($xml); foreach ($rss->REPORT->TOWN[0] as $forecast) { if ((string) $forecast['tod'] === '2') { foreach ($forecast as $key => $val) { $val = (array) $val; echo $key . ' = ' . var_export($val['@attributes'], true) . "\n"; } } } выведет: Код (Text): PHENOMENA = array ( 'cloudiness' => '1', 'precipitation' => '10', 'rpower' => '0', 'spower' => '0', ) PRESSURE = array ( 'max' => '738', 'min' => '736', ) TEMPERATURE = array ( 'max' => '26', 'min' => '24', ) WIND = array ( 'min' => '2', 'max' => '4', 'direction' => '4', ) RELWET = array ( 'max' => '33', 'min' => '31', ) HEAT = array ( 'min' => '23', 'max' => '25', )