2010-07-27 16 views
9

PHP sunucumdan iPhone uygulamasına json_encoded veri gönderiyorum. '&' gibi html varlıkları içeren dizeler json_encode tarafından atlanır ve & olarak gönderilir.jt_encode öğesinin html varlıklardan kaçmaması gerekir

iki şeyden birini yapmak arıyorum:

  • json_encode html varlıkları kaçamaz olun. Doc, 'normal' modunun kaçmaması gerektiğini söylüyor ama benim için çalışmıyor. Herhangi bir fikir? IPhone uygulamasını html varlıklarını ucuza kaçmak için

  • . Şimdi bunu yapmayı düşünebilmemin tek yolu, çok pahalı olan bir XML/HTML parser toplanmasını içeriyor. Daha ucuz öneriler var mı?

Teşekkürler!

cevap

7

PHP 5.3 veya PHP 5.2, HTML öğelerine dokunmaz.

Sen test aşağıdaki kodla bu edebilirsiniz:

<?php 
header("Content-type: text/plain"); //makes sure entities are not interpreted 
$s = 'A string with &amp; &#x6F8 entities'; 
echo json_encode($s); 

PHP yapar tek şey göreceksiniz dize sonuna çift tırnak eklemektir.

+1

Kaynağımın kendisinden kaçtı - beyin fırtınası! – psychotik

2

manual temel alınarak, açık bir şekilde belirtilmedikçe, PHP 5.3'te json_encode öğelerinizden kaçmaması gerekir. Belki de PHP'nin eski bir sürümünü mi kullanıyorsunuz?

+0

Evet, ben 5.2.6 Yani önceden 5.3 json_encode html varlıkları kaçmamış kullanıyorum varsayılan olarak? – psychotik

3

json_encode bunu yapmaz. HTML kodlamasını yapan başka bir bileşeniniz var.

json_encode($s, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT) 
: Eğer JSON_HEX_ seçeneklerini kullanırsanız

herhangi < veya & karakter böylece muhtemelen sorunu önleme (bunlar \u003C veya benzeri JS dize kaçar dönüştürülür olsun istiyorum) çıktıda görünmesini önleyebilirsiniz

Ancak bu, hangi karakterlerin tam olarak aşağı akışta HTML kodlu olarak kodlandığından emin olabilir. Belki de ASCII olmayan karakterler mi?

0

Artefacto'un cevabı kapalıyken, bu başlığı kullanmanız önerilir, özellikle sadece düz metin kullanmak yerine JSON verileri için tasarlanmıştır.

<?php 
header('Content-Type: application/json'); //Also makes sure entities are not interpreted 
$s = 'A string with &amp; &#x6F8 entities'; 
echo json_encode($s); 

bu içerik türünü kullanmak neden daha spesifik nedenlerle bu yazı check out emin olun What is the correct JSON content type?

İlgili konular