5

php を使用して、URL を含む XML ファイルを調べています。URL は次のようになります。

https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1

URL をエコーアウトすると、「¤」が「¤」(AKA #164、A4、または通貨記号) として表示され、リンクが機能しません。これは、終了セミコロンがない場合でも発生します。「¤」を文字どおりに表示する最もクリーンな方法は何ですか?

4

5 に答える 5

9

面白いことに、私はちょうど今同じ問題に遭遇し、この答えを見つけました。しかし、さらに良いかもしれない別の解決策を見つけました!

変数をクエリ文字列の先頭に置くだけで、 ¤ を完全に回避できます。

行う:

https://site.com/bacon_report?currentDimension=2&Id=1&report=1&param=1

それ以外の:

https://site.com/bacon_report?Id=1&report=1&currentDimension=2&param=1
于 2013-10-30T20:04:33.107 に答える
8

PHP 関数 urlencode を使用します。

urlencode("https://site.com/bacon_report?Id=1&report=1&currentDimension=2&param=1"

出力します

https%3A%2F%2Fsite.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1 
于 2013-10-29T22:34:45.883 に答える
6

ここでの問題はエスケープです。「&」文字をエスケープする必要があります。XML では、<、>、'、"、& などのすべての特殊文字をエスケープする必要があります。

次のように適切にエスケープします

https://example.com/bacon_report?Id=1&amp;report=1&amp;currentDimension=2&amp;param=1

..HTML のように:

<a href="https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1">WRONG - no escaping</a>
<a href="https://example.com/bacon_report?Id=1&amp;report=1&amp;currentDimension=2&amp;param=1">CORRECT - correct escape sequence</a>

したがって、HTML/XML で「¤」を表示する最もクリーンな方法は、アンパサンドを適切にエスケープし、「&curren」としてレンダリングすることです。

于 2015-02-05T14:34:10.763 に答える
0

この場合、urlentities を使用するのが最善だと思います。 https%3A%2F%2Fexample.com%2Fbacon_report%3FId%3D1%26report%3D1%26currentDimension%3D2%26param%3D1

urldecode を適用すると、htmlentities と同様に URL がきれいに出力される ¤ 記号が残ります。
https://example.com/bacon_report?Id=1&report=1&currentDimension=2&param=1

于 2016-12-23T16:06:24.967 に答える