Я использую php для просмотра XML-файла с URL-адресом в нем. URL-адреса выглядят примерно так:
https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1
Когда я повторяю URL-адреса, «& curren» отображается как «¤» (AKA # 164, A4 или символ валюты), и ссылки не работают. Это происходит, хотя для нее нет закрывающей точки с запятой. Каков самый чистый способ отображения «& curren» в буквальном смысле?
Используйте функцию php function urlencode:
urlencode("https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1"
выйдет
https%3A%2F%2Fsite.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1
Забавно, что я столкнулся с той же проблемой, и я нашел этот ответ. Однако я нашел другое решение, которое может быть даже лучше!
Просто поставьте переменную в начале строки запроса, и вы полностью избегаете ее.
Делать:
https://site.com/bacon_report?currentDimension=2&Id=1&report=1¶m=1
вместо:
https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1
Проблема здесь – побег – вам нужно избежать символов «&». В XML все специальные символы, такие как <,>, ', "и & должны быть экранированы.
Ищите его правильно, как
https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1
.. просто как в HTML:
<a href="https://example.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1">WRONG - no escaping</a> <a href="https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1">CORRECT - correct escape sequence</a>
Итак, самый чистый способ показать «и curren» в HTML / XML – это правильно выйти из амперсанда и отобразить его как «& amp; curren».
Я думаю, что в этом случае лучше использовать htmlentities, потому что с urlencode вы получаете https%3A%2F%2Fexample.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1
и при применении urldecode у вас все еще будет символ & curren, где, как и в htmlentities, URL-адрес выходит из строя.
https://example.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1