Pero, por supuesto, en modo normal no CLI. La salida formateada incluida entre otro HTML destruye el diseño de la página web existente.¿Hay alguna manera de forzar a phpinfo() a generar sus cosas sin formatear? Al igual que en el modo CLI?
7
A
Respuesta
2
Hay algunos buenos ejemplos de convertir la información en una matriz en el sitio PHP.net.
Here is the best example. Podría recorrer esa matriz para mostrarla de la forma que desee.
1
Este function hace un gran trabajo al convertir phpinfo en una matriz.
function parse_phpinfo() {
ob_start(); phpinfo(INFO_MODULES); $s = ob_get_contents(); ob_end_clean();
$s = strip_tags($s, '<h2><th><td>');
$s = preg_replace('/<th[^>]*>([^<]+)<\/th>/', '<info>\1</info>', $s);
$s = preg_replace('/<td[^>]*>([^<]+)<\/td>/', '<info>\1</info>', $s);
$t = preg_split('/(<h2[^>]*>[^<]+<\/h2>)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
$r = array(); $count = count($t);
$p1 = '<info>([^<]+)<\/info>';
$p2 = '/'.$p1.'\s*'.$p1.'\s*'.$p1.'/';
$p3 = '/'.$p1.'\s*'.$p1.'/';
for ($i = 1; $i < $count; $i++) {
if (preg_match('/<h2[^>]*>([^<]+)<\/h2>/', $t[$i], $matchs)) {
$name = trim($matchs[1]);
$vals = explode("\n", $t[$i + 1]);
foreach ($vals AS $val) {
if (preg_match($p2, $val, $matchs)) { // 3cols
$r[$name][trim($matchs[1])] = array(trim($matchs[2]), trim($matchs[3]));
} elseif (preg_match($p3, $val, $matchs)) { // 2cols
$r[$name][trim($matchs[1])] = trim($matchs[2]);
}
}
}
}
return $r;
}
1
Acabo de terminar de crear el composer library para este propósito. En este momento, puede analizar el resultado de phpinfo() cuando se invoca desde la línea de comando, que era mi caso de uso.
En lugar de usar strip_tags() o cualquier truco inteligente, simplemente trabajé hacia atrás desde todo lo que hizo el original function.
Puede utilizar la biblioteca de este modo:
<?php
include_once('vendor/autoload.php');
ob_start();
phpinfo();
$phpinfoAsString = ob_get_contents();
ob_get_clean();
$phpInfo = new OutCompute\PHPInfo\PHPInfo();
$phpInfo->setText($phpinfoAsString);
var_export($phpInfo->get());
?>
Puede acceder a las claves dentro de los módulos y en otros lugares:
echo $phpInfoArray['Configuration']['bz2']['BZip2 Support']; # Will output 'Enabled' if enabled
o
echo $phpInfoArray['Thread Safety'] # Will output 'disabled' if disabled.
Cuestiones relacionadas
- 1. ¿Hay alguna manera de forzar a ASP.NET Web API a que devuelva texto sin formato?
- 2. ¿Hay alguna manera de forzar el modo estricto en el nodo?
- 3. ¿Hay alguna manera simple de formatear decimales en T-SQL?
- 4. ¿Hay alguna manera de forzar a Checkstyle a ignorar una advertencia particular en el código fuente?
- 5. ¿Hay alguna manera de ingresar al modo multiproceso Cocoa sin crear NSThread falso?
- 6. ¿Hay alguna manera de forzar a un before_filter a ejecutar siempre el último?
- 7. ¿Hay alguna manera de forzar a Mathematica a eliminar el atributo Bloqueado?
- 8. ¿Hay alguna manera de llamar a ruby1.9 sin cargar rubygems?
- 9. Algoritmo para encontrar si hay alguna i de manera que array [i] es igual a i
- 10. ¿Hay alguna manera de forzar a un MSI "aleatorio" a realizar una única instalación de usuario?
- 11. ¿Hay alguna manera de forzar a un WrapPanel a insertar una "nueva línea" en WPF?
- 12. ¿Hay alguna manera de forzar a Firefox a iniciarse en un nuevo proceso?
- 13. ¿Hay alguna manera de llamar a una subfunción en el modo de célula en matlab?
- 14. ¿Hay alguna manera de forzar a PHP a esperar hasta que MySQL haya terminado con una transacción?
- 15. ¿Hay alguna herramienta para convertir Managed C++ a C++/CLI?
- 16. ¿Hay alguna manera de cambiar el modo predeterminado de vim?
- 17. ¿Hay alguna expresión en Python que al igual que el rubí del || =
- 18. ¿Hay alguna manera de marcar el código para decirle a ReSharper que no lo formatee?
- 19. ¿Hay alguna manera de mostrar una lista de macros similar a mostrar sus asignaciones en Vim?
- 20. ¿Hay alguna manera de forzar la orientación de la interfaz para que cambie en iPhone?
- 21. ¿Hay alguna manera de forzar Core Animation para que ejecute su hilo?
- 22. ¿Hay alguna consulta para Cassandra igual que SQL: LIKE Condition?
- 23. ¿Hay alguna manera de obligar a Eclipse a reiniciar automáticamente la depuración remota (en el modo de escucha)?
- 24. ¿hay alguna manera de forzar una reversión transaccional sin encontrar una excepción?
- 25. ¿Hay alguna manera de hacer columnas de tabla igual a una fracción del ancho total?
- 26. ¿Hay alguna manera de que Asio funcione sin Boost?
- 27. ¿Hay alguna manera de llamar a Navigate desde el ViewModel?
- 28. ¿Hay alguna manera de decirle a NServiceBus que no vuelva a intentar un mensaje?
- 29. Python Equivalente a phpinfo()
- 30. ¿Hay alguna manera de reformatear código en FlashDevelop?
Compruebe los comentarios sobre http: // php.net/phpinfo. Hay algunas soluciones a sus problemas allí. – alexn