如何将phpinfo()的输出作为xml?

时间:2014-02-13 13:08:41

标签: php xml

有没有办法实现这个目标?

我发现了这个功能:

function phpinfo_array($return=true){
             /* Andale!  Andale!  Yee-Hah! */
             ob_start();
             phpinfo(-1);

             $pi = preg_replace(
             array('#^.*<body>(.*)</body>.*$#ms', '#<h2>PHP License</h2>.*$#ms',
             '#<h1>Configuration</h1>#',  "#\r?\n#", "#</(h1|h2|h3|tr)>#", '# +<#',
             "#[ \t]+#", '#&nbsp;#', '#  +#', '# class=".*?"#', '%&#039;%',
              '#<tr>(?:.*?)" src="(?:.*?)=(.*?)" alt="PHP Logo" /></a>'
              .'<h1>PHP Version (.*?)</h1>(?:\n+?)</td></tr>#',
              '#<h1><a href="(?:.*?)\?=(.*?)">PHP Credits</a></h1>#',
              '#<tr>(?:.*?)" src="(?:.*?)=(.*?)"(?:.*?)Zend Engine (.*?),(?:.*?)</tr>#',
              "# +#", '#<tr>#', '#</tr>#'),
             array('$1', '', '', '', '</$1>' . "\n", '<', ' ', ' ', ' ', '', ' ',
              '<h2>PHP Configuration</h2>'."\n".'<tr><td>PHP Version</td><td>$2</td></tr>'.
              "\n".'<tr><td>PHP Egg</td><td>$1</td></tr>',
              '<tr><td>PHP Credits Egg</td><td>$1</td></tr>',
              '<tr><td>Zend Engine</td><td>$2</td></tr>' . "\n" .
              '<tr><td>Zend Egg</td><td>$1</td></tr>', ' ', '%S%', '%E%'),
             ob_get_clean());

             $sections = explode('<h2>', strip_tags($pi, '<h2><th><td>'));
             unset($sections[0]);

             $pi = array();
             foreach($sections as $section){
               $n = substr($section, 0, strpos($section, '</h2>'));
               preg_match_all(
               '#%S%(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?(?:<td>(.*?)</td>)?%E%#',
                 $section, $askapache, PREG_SET_ORDER);
               foreach($askapache as $m)
                   $pi[$n][$m[1]]=(!isset($m[3])||@$m[2]==$m[3])?@$m[2]:array_slice($m,2);
             }

             return ($return === false) ? print_r($pi) : $pi;

}

此函数返回一个数组,其中包含来自phpinfo()的数据,看起来非常像锤子方法;)

但似乎,phpinfo()提供了无法实现的数据。

现在我怎样才能正确地将这个复杂的数组转换为有效的XML?

1 个答案:

答案 0 :(得分:0)

看起来你的函数会返回一个数组。

您可以使用SimpleXMLElement轻松将其转换为xml,方法是遍历数组并添加键和值。

有一些很好的答案here