Frage

Ich bin mit print_r (debug_backtrace (), true) eine String-Darstellung des Debug-Backtrace abzurufen. Dies funktioniert gut, wie print_r Griffe Rekursion.

Als ich versuchte, eine Iteration durch die debug_backtrace () return Array rekursiv, bevor es in einen String drehen lief es in Rekursion und nie beendet.

Gibt es eine einfache Weise, die ich bestimmte sensible Schlüssel / Wert-Paare aus der Backtrace-Array entfernen? Vielleicht eine Möglichkeit, das Array in einen String mit print_r zu drehen, dann wieder auf ein Array mit den rekursiven Stellen auf den String geändert RECURSION , die ich konnte die durchlaufen.

Ich möchte nicht, reguläre Ausdrücke auf der String-Darstellung, wenn möglich auszuführen.

War es hilfreich?

Lösung

Aha ... herausgefunden, dass, wenn ich die debug_backtrace Array serialisiert und dann immemdiately unserialize, das resultierende Array die rekursive Referenzen des ursprünglichen Arrays fehlen wird und ich kann sicher rekursiv durchlaufen sie.

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

recursive_sanitization_func($backtrace);

Bearbeiten : Okay, so ist dies keine vollständige Lösung. Es funktioniert für rekursive Objekte Referenzen (sie sind verloren), aber nicht für rekursive Arrays (sie werden beibehalten).

Meine aktuelle Lösung ist zum Serialisieren / unserialize wie oben, und führt das resultierende Array durch eine Rekursion-Detektionsfunktion wie das hier beschrieben: http://www.php.net/manual/en/ref.array.php#96914

Ich wünschte, es war etwas einfacher, aber das ist mir immer von jetzt es sei denn, jemand anderes mit einer besseren Lösung kommt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top