fork download
  1. <?php
  2.  
  3. $xml = <<<'XML'
  4. <?xml version="1.0" encoding="utf-8"?>
  5. <extensions>
  6. <extension extensionkey="fp_product_features">
  7. <downloadcounter>355</downloadcounter>
  8. <version version="0.1.0">
  9. <title>Product features</title>
  10. <description/>
  11. <downloadcounter>24</downloadcounter>
  12. <state>beta</state>
  13. <reviewstate>0</reviewstate>
  14. <category>plugin</category>
  15. <lastuploaddate>1142878270</lastuploaddate>
  16. <uploadcomment> added related features</uploadcomment>
  17. </version>
  18. </extension>
  19. </extensions>
  20. XML;
  21.  
  22. $reader = new XMLReader();
  23. $reader->open('data:/text/plain,'.urlencode($xml));
  24.  
  25. $result = [];
  26. $element = null;
  27.  
  28. while ($reader->read()) {
  29.  
  30. if($reader->nodeType === XMLReader::ELEMENT)
  31. {
  32. $element = $reader->name;
  33.  
  34. if($element === 'extensions') {
  35. $result['extensions'] = array();
  36. }
  37.  
  38. if($element === 'extension') {
  39. $result['extensions']['extension'] = array();
  40. }
  41.  
  42. if($element === 'downloadcounter') {
  43. if(!array_key_exists($result['extensions']['extension'], 'version')) {
  44. $result['extensions']['extension']['downloadcounter'] = '';
  45. } /*else {
  46. $result['extensions']['extension']['version']['downloadcounter'] = '';
  47. }*/
  48. }
  49.  
  50. if($element === 'version') {
  51. $result['extensions']['extension']['version'] = array();
  52. while ($reader->read()) {
  53. if($reader->nodeType === XMLReader::ELEMENT)
  54. {
  55. $element = $reader->name;
  56. $result['extensions']['extension']['version'][$element] = '';
  57. }
  58. if($reader->nodeType === XMLReader::TEXT)
  59. {
  60. $value = $reader->value;
  61. $result['extensions']['extension']['version'][$element] = $value;
  62. }
  63. }
  64. }
  65. }
  66.  
  67. if($reader->nodeType === XMLReader::TEXT)
  68. {
  69. $value = $reader->value;
  70.  
  71. if($element === 'downloadcounter') {
  72. if(!is_array($result['extensions']['extension']['version'])) {
  73. $result['extensions']['extension']['downloadcounter'] = $value;
  74. }
  75. if(is_array($result['extensions']['extension']['version'])) {
  76. $result['extensions']['extension']['version']['downloadcounter'] = $value;
  77. }
  78. }
  79. }
  80. }
  81. $reader->close();
  82.  
  83. echo var_export($result, true);
Success #stdin #stdout #stderr 0.01s 20568KB
stdin
Standard input is empty
stdout
array (
  'extensions' => 
  array (
    'extension' => 
    array (
      'downloadcounter' => '355',
      'version' => 
      array (
        'title' => 'Product features',
        'description' => '',
        'downloadcounter' => '24',
        'state' => 'beta',
        'reviewstate' => '0',
        'category' => 'plugin',
        'lastuploaddate' => '1142878270',
        'uploadcomment' => ' added related features',
      ),
    ),
  ),
)
stderr
PHP Warning:  array_key_exists() expects parameter 2 to be array, string given in /home/7CVuO9/prog.php on line 43
PHP Notice:  Undefined index: version in /home/7CVuO9/prog.php on line 72
PHP Notice:  Undefined index: version in /home/7CVuO9/prog.php on line 75