Как предотвратить интерпретацию XML в URL-адресах?

#php #xml #echo

#php #xml #echo

Вопрос:

Я пытаюсь заставить PHP повторить это:

 http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2amp;XML=<TrackRequest USERID="123456"><TrackID ID=".$trackno."></TrackID></TrackRequest>";
  

Однако, когда я открываю эту страницу в своем браузере (FF4), отображается только это:

 http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2amp;XML=
  

Браузер считает, что onwards является частью XML-документа, поэтому он не отображает его, как показано здесь:

введите описание изображения здесь

(части исключены по понятным причинам : D)

Как мне исправить эту проблему?

Спасибо!

Комментарии:

1. запустите htmlentities() строку перед ее выводом. Браузер интерпретирует <TrackRequest как тег. Он будет отображаться только так, как вы хотите, как amp;<TrackRequest и т.д.

2. echo Тогда это не проблема, не так ли? 😛

Ответ №1:

Он проанализирует его как HTML. Это не имеет ничего общего с XML. Используйте тип содержимого text / обычный заголовок, чтобы сообщить браузеру, что это обычный текст.

Если этот URL-адрес не единственный выходной, но он является частью HTML-страницы, используйте htmlspecialchars или htmlentities.

Комментарии:

1. Как мне использовать функции htmlentitles и htmlspecialchars? Я пытался использовать htmlentitles ($ url) и htmlspecialchars ($ url), но результат все тот же … спасибо!

Ответ №2:

Вы можете сделать это:

 $a = "http://production.shippingapis.com/ShippingAPI.dll?API=TrackV2amp;XML=<TrackRequest USERID="123456"><TrackID ID=".$trackno."></TrackID></TrackRequest>";
echo htmlentities($a);
  

или

 echo "<pre>$a</pre>"; // the first is better;