我使用print_r(debug_backtrace(),true)检索字符串表示的回溯追踪调试.这个工作很好,因为print_r处理递归。

当我试图递归迭代过debug_backtrace()return array之前把它变成一串它跑到递归和永远不会结束。

有一些简单的方法我可以删除某些敏感键值对从回溯阵?也许是某种方式转列到一个字符串中使用print_r,然后回到一系列与递归的地点改变的字符串 递归, 我可以迭代过。

我不想要执行经常表达的串表示,如果可能的。

有帮助吗?

解决方案

啊哈...想出,如果我serialize的debug_backtrace阵列,然后immemdiately解序列化它,得到的数组将缺乏引用递归的原有阵和我可以安全地递归的循环。

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

recursive_sanitization_func($backtrace);

编辑:好了,这不是一个完整的解决方案。它适用于递归的对象,参考文献(它们失去了),但不用递归阵列(他们保留).

我的前的解决方案是serialize/解序列化如上所述,然后运行得到的数组通过递归检测功能,例如描述: http://www.php.net/manual/en/ref.array.php#96914

我希望能有更多的东西简单,但这是让我通过为现在除非有人来了一个更好的解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top