Herkes json_encode ve json_decode kullanarak bu PHP kodu açıklayabilir misiniz?

3 Cevap php
  $a = '{ "tag": "<b></b>" }';
  echo json_encode( json_decode($a) );

Bu çıkışlar:

{"tag":"<b><\/b>"}

Eğer tam çıkış giriş zannettiğiniz zaman. Nedense json_encode ekstra bir çizgi ekler.

3 Cevap

Bu JSON standardının bir parçasıdır Çünkü

http://json.org/

karakter

any-Unicode-karakteracter-
    except-"-or-\-or-
    control-karakteracter
\"
\\
\/ <---- see here?
\b
\f
\n
\r
\t
\u four-hex-digits

Muhtemelen bir güvenlik özelliği bulunuyor. Kaçtı sürümü (Örn. çıkış) Javascript (örn. \/ olur /) tarafından, çıkmamış-sürümüne benzer olarak çözümlenen. Böyle bölü kaçtı sonra, HTML olarak Javascript-dize misinterpreting tarayıcının daha az şansı var. Eğer verilerin doğru tedavi Tabii ki, bu ihtiyaç olmamalı, bu nedenle kendisi için bir şeyler karışıklık clueless programcı karşı daha fazla bir koruma var.

Sizin giriş geçerli JSON değil, ama (çoğu json ayrıştırıcıların gibi) PHP'nin JSON çözümleyici yine ayrıştırmak olacaktır.