3v4l.org

run code in 300+ PHP versions simultaneously
<?php // First of all, I've added <root> element to your XML document, // because otherwise it's invalid. // But it's not important for the rest of the code. // // Also I've added additional <somethingelse> tag to show that filtering is working $xmlString = '<root><details> <name>name1</name> <address>address1</address> </details> <details> <name>name2</name> <mobile>mobileNum</mobile> <address>address2</address> <somethingelse>This will be filtered</somethingelse> </details></root>'; $xml = new SimpleXMLElement($xmlString); //array_flip to get node names as keys for later foreach loop $nodes = array_flip(array ( 'person_name' => 'name', 'mobile_no' => 'mobile', 'address' => 'address', )); $final_data = array(); //Here are all <details> sections' data in array. $node_values = $xml->xpath('//details'); $node_values = json_decode(json_encode((array)$node_values), TRUE); //this loop filters XML data from keys not existing in $nodes, which are the only that you want to keep foreach($node_values as $node) { $final_data[] = array_intersect_key($node, $nodes); } var_dump($final_data);
Output for git.master, git.master_jit, rfc.property-hooks
array(2) { [0]=> array(2) { ["name"]=> string(5) "name1" ["address"]=> string(8) "address1" } [1]=> array(3) { ["name"]=> string(5) "name2" ["mobile"]=> string(9) "mobileNum" ["address"]=> string(8) "address2" } }

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
54.69 ms | 401 KiB | 8 Q