Domanda

Sto usando print_r (debug_backtrace (), true) per recuperare una rappresentazione di stringa del backtrace di debug. Questo funziona bene, come le maniglie print_r ricorsione.

Quando ho provato a ricorsivamente scorrere la matrice di ritorno debug_backtrace () prima di trasformarlo in una stringa che ha incontrato la ricorsione e mai terminato.

C'è un modo semplice posso rimuovere alcune coppie chiave / valore sensibili dalla matrice backtrace? Forse un modo per girare l'array in una stringa utilizzando print_r, poi di nuovo a un array con le posizioni ricorsive cambiato alla stringa Ricorsione , che ho potuto l'Scorrere.

Non voglio eseguire le espressioni regolari sulla rappresentazione di stringa, se possibile.

È stato utile?

Soluzione

Aha ... capito che se ho serializzare la matrice debug_backtrace e poi immemdiately unserialize esso, l'array risultante mancheranno i riferimenti ricorsivi della matrice originale e posso tranquillamente ricorsivamente iterare attraverso di essa.

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

recursive_sanitization_func($backtrace);

Modifica : Okay, quindi questa non è una soluzione completa. Si lavora per gli oggetti ricorsivi riferimenti (sono persi), ma non per gli array ricorsivi (sono mantenuti).

mia soluzione attuale è di serializzare / unserialize come sopra, e quindi eseguire la matrice risultante attraverso una funzione di rilevamento ricorsione come quello descritto qui: http://www.php.net/manual/en/ref.array.php#96914

Vorrei che ci fosse qualcosa di più semplice, ma questo mi è sempre da per ora a meno che qualcun altro esce con una soluzione migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top