Ene
29
Rebuscando entre la documentación de PHP y mas concretamente entre los comentarios de los usuarios, encuentro esta pedazo función que a simple vista me ha encantado y que a partir de ahora voy a tener presente en la mayoria de mis proyectos (ya le encontraré una utilidad).
¿Que es phpinfo2array?
Es una función que convierte la salida de phpinfo() en una array.
<?php /*** * phpinfo2array: Convierte la salida de phpinfo() en una array. * http://bezerik.es/me/phpinfo2array-convierte-la-salida-de-phpinfo-en-una-array/ * * Thanks to webmaster at askapache dot com and more others. * More info at http://es2.php.net/phpinfo */ function phpinfo2array($return=false){ /* 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]+#", '# #', '# +#', '# class=".*?"#', '%'%', '#<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; } ?>
Ejemplos de uso de phpinfo2array
Si llamais a esta función sin parámetros imprimirá la matriz por pantalla: Ver resultado de ejemplo.
<? phpinfo2array(); ?>
En cambio, devolverá la array para vuestro propio uso si la llamais de la siguiente manera (fijaos en el 1 como parametro de entrada).
<? // Construimos la array con toda la información que nos devuelve phpinfo(). $phpinfo = phpinfo2array(1); // Por ejemplo, mostramos la versión de PHP. echo $phpinfo['PHP Configuration']['PHP Version']."<br />"; // Mostramos el correo electronico del administador del servidor web. echo $phpinfo['apache2handler']['Server Administrator']."<br />"; // y un largo etcera... ?>
¡Y todo este post ha sido creado porque me ha venido de gusto promocionarlo!
Más información en Manual phpinfo.