Pregunta

Estoy utilizando print_r (debug_backtrace (), true) para recuperar una representación de cadena de la traza de depuración. Esto funciona bien, como asas print_r recursividad.

Cuando traté de forma recursiva iterar a través de la matriz de retorno debug_backtrace () antes de convertirlo en una cadena que se topó con la recursividad y nunca terminado.

¿Hay alguna manera sencilla puedo eliminar ciertos pares clave / valor sensibles de la matriz traza inversa? Quizá alguna manera de convertir la matriz en una cadena mediante print_r, luego de vuelta a una matriz con los lugares recursivas cambiado a la cadena RECURSION , que pude el iterar.

No quiero para ejecutar las expresiones regulares en la representación de cadena si es posible.

¿Fue útil?

Solución

Aha ... descubrió que si serializar la matriz debug_backtrace y luego immemdiately unserialize ella, la matriz resultante carecerá de las referencias recursivas de la matriz original y puedo con seguridad de forma recursiva iterar a través de él.

$backtrace = debug_backtrace();
$backtrace = serialize($backtrace);
$backtrace = unserialize($backtrace);

recursive_sanitization_func($backtrace);

Editar : Muy bien, así que esto no es una solución completa. Funciona para objetos recursivos referencias (que se pierden), pero no para las matrices recursivas (que se conservan).

Mi solución actual es serializar / unserialize como anteriormente, y a continuación, ejecutar la matriz resultante a través de una función de recursión de detección tal como el descrito aquí: http://www.php.net/manual/en/ref.array.php#96914

Me gustaría que hubiera algo más sencillo, pero esto me está consiguiendo por ahora por menos que alguien se le ocurre una solución mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top