Я отправляю json_encoded
данные от моего сервера PHP до приложения для iPhone. Строки, содержащие объекты HTML, как '&'
оставляют json_encode
и отправленный как &
.
Я надеюсь делать одну из двух вещей:
сделать json_encode
не выходят из объектов HTML. Doc говорит, что 'нормальный' режим не должен выходить из него, но это не работает на меня. Какие-либо идеи?
сделайте объекты HTML неEscape приложения для iPhone дешево. Единственным путем я могу думать о выполнении, оно теперь включает вращение a XML/HTML parser
который является очень дорогим. Какие-либо более дешевые предложения?
Спасибо!
Ни PHP 5.3, ни PHP 5.2 не затрагивают объекты HTML.
Вы можете проверить это с помощью следующего кода:
<?php
header("Content-type: text/plain"); //makes sure entities are not interpreted
$s = 'A string with & ۸ entities';
echo json_encode($s);
Вы увидите, что единственное, что делает PHP - это добавляет двойные кавычки вокруг строки.
Исходя из руководства, кажется, что json_encode не должен экранировать ваши сущности, если вы явно не скажете ему об этом, в PHP 5.3. Возможно, вы используете более старую версию PHP?
. json_encode
этого не делает. У вас есть другой компонент, выполняющий кодирование HTML.
Если вы используете параметры JSON_HEX_
, вы можете избежать появления любых символов <
или &
в выводе (они будут преобразованы в \ u003C
или аналогичные escape-последовательности строковых литералов JS), что, возможно, позволяет избежать проблемы:
json_encode($s, JSON_HEX_TAG|JSON_HEX_AMP|JSON_HEX_QUOT)
хотя это будет зависеть от знания того, какие именно символы кодируются в HTML ниже по течению. Может быть, и символы, отличные от ASCII?