Можно ли вывести знак «&» в XML-файле? - PullRequest
0 голосов
/ 20 февраля 2011

У меня есть php, который генерирует xml-файл и печатает его на экране.

Среди других переменных он печатает ссылку на изображение.

Проблема в том, что если эта ссылка на изображение имеетВ нем есть символ '&', я получаю ошибку xml, потому что она не закодирована должным образом.

Поэтому я решаю ее, заменив знак & на &.

Atleast Iдумал, что это было решено, теперь ссылка на изображение, например, выглядит следующим образом:

  www.domain.com/phones & equipment/img1.jpg

, что приводит к тому, что файл 404 не найден.

Реальный путь -

  www.domain.com/phones & equipment/img1.jpg

Так как я могу решить это тогда?Я бы предпочел не менять имена папок, я просто не знал об этом при создании папок.

Спасибо

Ответы [ 6 ]

4 голосов
/ 20 февраля 2011

Если это URL, вы можете URL кодировать вместо этого:

www.domain.com/phones%20%26%20equipment/img1.jpg
1 голос
/ 20 февраля 2011

Кроме того, если вы проверите RFC IANA относительно URL / URI, вы увидите, что символ пробела не является допустимым символом и не должен присутствовать внутри URI REQUEST.Наличие вашего URL-адреса, например www.domain.com/phones-and-equipment/img1.jpg, было бы очень полезно с точки зрения SEO.

ADDENDUM: Например, проверьте страницу 2, раздел "Небезопасный" в RFC 1738 и выясните, почемупечатные и не-US-ASCII символы небезопасны.

1 голос
/ 20 февраля 2011

Вы должны зашифровать ссылку, используя функцию php urlencode(). Код для «&» - «% 26».

1 голос
/ 20 февраля 2011

попробуйте

www.domain.com/phones+%26+equipment/img1.jpg
0 голосов
/ 20 февраля 2011

Правильное представление амперсанда в XML-файле: &. Если это не работает, проблема в коде, который читает файл XML и защищает URI.

0 голосов
/ 20 февраля 2011

используйте html_entity_decode для преобразования & обратно в &

см. http://php.net/manual/en/function.html-entity-decode.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...