Nasıl debug_backtrace işlevi hassas verileri kaldırmak olabilir?

1 Cevap php

Ben hata ayıklama backtrace bir dize temsilini almak için print_r (true debug_backtrace ()) kullanıyorum. Print_r Özyinelemeyi kolları gibi, bu, çalışıyor.

Ben ardışık debug_backtrace arasında yineleme için çalıştı () o özyinelemenin koştu ve asla sona bir dizeye açmadan önce bir dizi dönmek.

Ben backtrace diziden belirli hassas anahtar / değer çiftlerini kaldırmak için bazı basit bir yolu var mı? Belki özyinelemeli yerleri geri bir dizi sonra, print_r kullanarak bir dize dizisi çevirmek için bazı yolu dize RECURSION aracılığıyla elimden yinelemek değiştirdi.

Ben mümkünse dize gösterimine düzenli ifadeleri yürütmek istemiyorum.

1 Cevap

Aha ... Ben debug_backtrace dizi serialize ve sonra immemdiately bunu unserialize ise, elde edilen dizisi orijinal dizinin yinelenen başvurular eksikliği ve güvenli bir şekilde yinelemeli bunu yinelemek olduğunu anladım.

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

recursive_sanitization_func($backtrace);

EDIT: Tamam, bu tam bir çözüm değildir. Bu özyinelemeli nesnelerin başvuru için çalışıyor (onlar kayıp) ama ardışık diziler için (bunlar korunur) değil.

http://www.php.net/manual/en/ref.array.php#96914: Benim geçerli çözüm olarak yukarıdaki / unserialize serialize ve sonra öyle ki burada anlatıldığı gibi bir yineleme-algılama fonksiyonu ile elde edilen dizi çalıştırmak için

Ben daha basit bir şey olsaydı ama başkası daha iyi bir çözüm ile geliyor sürece bu şimdi beni tarafından oluyor.