3v4l.org

run code in 300+ PHP versions simultaneously
<?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <cats> <cat order="first"> <name>Lucy</name> <coat>Tortoiseshell</coat> <breed>Domestic Longhair</breed> </cat> <cat order="second"> <name>Ricky</name> <coat>Gray Tabby</coat> <breed>Maine Coon mix</breed> </cat> </cats> XML; $reader = new \XMLReader(); $reader->open('data://text/plain,' . urlencode($xml)); $nextElement = static function (?string $name = null) use ($reader) { while ($reader->read()) { if ( $reader->nodeType === \XMLReader::ELEMENT && (null === $name || $name === $reader->name) ) { return true; } } return false; }; while ($reader->read()) { if ($reader->nodeType === \XMLReader::ELEMENT) { printf("<%s>(%s):\n", $reader->name, $reader->depth); if ($reader->name === 'cat') { if ($reader->getAttribute('order') === 'first') { if ($nextElement('name')) { printf("<%s>(%s):\n", $reader->name, $reader->depth); var_dump($reader->readString()); } } } } }
Output for 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.4, 8.3.6 - 8.3.7
<cats>(0): <cat>(1): <name>(2): string(4) "Lucy" <coat>(2): <breed>(2): <cat>(1): <name>(2): <coat>(2): <breed>(2):
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 <cats>(0): <cat>(1): <name>(2): string(4) "Lucy" <coat>(2): <breed>(2): <cat>(1): <name>(2): <coat>(2): <breed>(2):

preferences:
117.76 ms | 402 KiB | 155 Q