3v4l.org

run code in 300+ PHP versions simultaneously
<?php $xml = '<products> <product> <categoryName>Kable i konwertery AV</categoryName> <brandName>Belkin</brandName> <productCode>AV10176bt1M-BLK</productCode> <productId>5616488</productId> <productFullName>Kabel Belkin Kabel HDMI Ultra HD High Speed 1m-AV10176bt1M-BLK</productFullName> <productEan>0745883767465</productEan> <productEuroPriceNetto>59.71</productEuroPriceNetto> <productFrontendPriceNetto>258.54</productFrontendPriceNetto> <productFastestSupplierQuantity>23</productFastestSupplierQuantity> <deliveryEstimatedDays>2</deliveryEstimatedDays> </product> <product> <categoryName>Telewizory</categoryName> <brandName>Sony</brandName> <productCode>KDL32WD757SAEP</productCode> <productId>1005662</productId> <productFullName>Telewizor Sony KDL-32WD757 SAEP</productFullName> <productEan></productEan> <productEuroPriceNetto>412.33</productEuroPriceNetto> <productFrontendPriceNetto>1785.38</productFrontendPriceNetto> <productFastestSupplierQuantity>11</productFastestSupplierQuantity> <deliveryEstimatedDays>6</deliveryEstimatedDays> </product> <product> <categoryName>Kuchnie i akcesoria</categoryName> <brandName>Brimarex</brandName> <productCode>1566287</productCode> <productId>885156</productId> <productFullName>Brimarex Drewniane owoce, Kiwi - 1566287</productFullName> <productEan></productEan> <productEuroPriceNetto>0.7</productEuroPriceNetto> <productFrontendPriceNetto>3.05</productFrontendPriceNetto> <productFastestSupplierQuantity>7</productFastestSupplierQuantity> <deliveryEstimatedDays>3</deliveryEstimatedDays> </product> </products>'; $reader = new XMLReader(); $reader->xml($xml); $count = 0; $this_value = ''; $products = array(); while($reader->read()) { switch ($reader->nodeType) { case XMLReader::ELEMENT: // deal with self-closing tags e.g. <productEan /> if ($reader->isEmptyElement) { ${$reader->name} = ''; $products[$count][$reader->name] = ''; } break; case XMLReader::TEXT: case XMLReader::CDATA: // save the value for storage when we get to the end of the element $this_value = $reader->value; break; case XMLReader::END_ELEMENT: if ($reader->name == 'product') { $count++; print_r(array($categoryName, $brandName, $productCode, $productId, $productFullName, $productEan, $productEuroPriceNetto, $productFrontendPriceNetto, $productFastestSupplierQuantity, $deliveryEstimatedDays)); } elseif ($reader->name != 'products') { ${$reader->name} = $this_value; $products[$count][$reader->name] = $this_value; // set this_value to a blank string to allow for empty tags $this_value = ''; } break; case XMLReader::WHITESPACE: case XMLReader::SIGNIFICANT_WHITESPACE: default: // nothing to do break; } } $reader->close(); print_r($products);

preferences:
23.78 ms | 404 KiB | 5 Q