PHPでクエリパラメータ付きのURLを確認していると、¤cy
の部分が¤cy
となって表示された。
初めて見る特殊文字だったので共有します。
意味
currency:通貨、 流通貨幣(Weblioより) ¤:国際通貨記号(Wikiより)
現象
下のようにクエリパラメータのcurrecy
に通貨の情報を渡したURLをecho
して表示したら現れた。
echo 'http://{domain}/api?price=100¤cy=JPY';
// 出力
// http://{domain}/api?price=100¤cy=JPY
http://{domain}/api?price=100¤cy=JPY
HTMLに直接書くと現れない。
同様の質問がStack Overflowでも2件ありました。
PHP "¤" string turns into weird symbol - Stack Overflow
環境
- PHP7.x
- HTML5
- Chrome
文字参照
¤
がHTMLの文字参照に割り当てられているみたいです。
セミコロンなしでも変換するようです。
おなじみの空白記号の
などもこれに当たります。
クエリパラメータとして使いそうな文字をいくつか抜粋する。
記号 | 文字実体参照 | 説明 |
---|---|---|
© | © |
著作権記号 |
° | ° |
度記号 |
µ | µ |
ミクロン記号 |
¬ | ¬ |
否定記号 |
® | ® |
登録商標 |
× | × |
乗算記号 |
試しに盛り盛りのクエリパラメータを表示してみる。
echo `https://test.com/api?query=1©=12°ree=45µsoft=true¬e=text®ular=満タン×pan=100`;
出力:https://test.com/api?query=1©=12°ree=45µsoft=true¬e=text®ular=満タン×pan=100
おー!たくさん出た!
結論
実害は少ないと思いますが、文字参照にも気をつかったほうが良さそうです。
PHP Warning Illegal string offset 'foo'
PHPschedule2020-02-03
PHP Notice:Undefined indexの対処
PHPschedule2020-01-17
PHP compact関数で宣言していない変数の扱い
PHPschedule2020-01-15