php を使用して、URL を含む XML ファイルを調べています。URL は次のようになります。
https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1
URL をエコーアウトすると、「¤」が「¤」(AKA #164、A4、または通貨記号) として表示され、リンクが機能しません。これは、終了セミコロンがない場合でも発生します。「¤」を文字どおりに表示する最もクリーンな方法は何ですか?
php を使用して、URL を含む XML ファイルを調べています。URL は次のようになります。
https://site.com/bacon_report?Id=1&report=1¤tDimension=2¶m=1
URL をエコーアウトすると、「¤」が「¤」(AKA #164、A4、または通貨記号) として表示され、リンクが機能しません。これは、終了セミコロンがない場合でも発生します。「¤」を文字どおりに表示する最もクリーンな方法は何ですか?
面白いことに、私はちょうど今同じ問題に遭遇し、この答えを見つけました。しかし、さらに良いかもしれない別の解決策を見つけました!
変数をクエリ文字列の先頭に置くだけで、 ¤ を完全に回避できます。
行う:
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
PHP 関数 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
ここでの問題はエスケープです。「&」文字をエスケープする必要があります。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>
したがって、HTML/XML で「¤」を表示する最もクリーンな方法は、アンパサンドを適切にエスケープし、「¤」としてレンダリングすることです。
この場合、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¤tDimension=2¶m=1