3v4l.org

run code in 300+ PHP versions simultaneously
<?php $xml = <<<XML <?xml version="1.0" encoding="UTF-8"?> <root> <garbage> <selfClosedElement attribute="annoying" />parse this text </garbage> </root> XML; $reader = new \XMLReader(); $reader->open('data://text/plain,' . urlencode($xml)); $nextElement = static function (string $name) use ($reader) { while ($reader->read()) { if ($reader->nodeType === \XMLReader::ELEMENT && $name === $reader->name) { return true; } } return false; }; while ($reader->read()) { if ($reader->nodeType === \XMLReader::ELEMENT) { if ($reader->name === 'garbage') { echo $reader->readString(); if($nextElement('selfClosedElement')) { echo 'attribute, hopefully: ' . $reader->getAttribute('attribute') . \PHP_EOL; } } } }
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
parse this text attribute, hopefully: annoying
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 parse this text attribute, hopefully: annoying

preferences:
111.17 ms | 402 KiB | 155 Q