| ブログトップ | PHP関連 |

htmlspecialcharsに注意【PHP】

この記事は1年以上前の記事のため、内容が古い可能性があります。

今更な話題ですが、詰まったのでメモ。

PHPが5.3から5.5に変わった途端、フォームにて日本語がPOSTされるとまるごと消えてしまう現象が発生しました。(ちなみにそのサイトはEUC-JPで作成されていました)

この現象はWordpressなどでもあったので、

default_charset
mbstring.internal_encoding

あたりの仕業だろうと思っていたのですが、これらはコメントアウトされている。(つまり特定の文字コードに設定されていない)

phpinfoを見てもおかしなところは全然見当たらない。

ということでいろいろ調べてみると、なんとhtmlspecialcharsが原因であることが判明しました。

このhtmlspecialcharsはもともとは、「ISO-8859-1」がデフォルト文字コードで変換がされていたのですが、PHP5.4から「UTF-8」がデフォルトになったとのこと。

しかも、php.iniで設定されている文字コードに準拠してくれればよいのですが、これはちゃんと設定してあげないと、強制的に「UTF-8」が使用されてしまうらしい。(第3引数をクォートなどで任意に空にしてあげれば準拠してくれるらしい。でも、第3引数をなにも設定してないとUTF-8となる。なんでやねん)

ということで、簡単な方法はないかを探していたけど、やっぱり引数をつけてあげるしかないみたい・・・

htmlspecialchars($hoge, ENT_COMPAT | ENT_HTML401, "ISO-8859-1");

参考サイト

htmlspecialchars()を使うと文字が消える? | PHP Archive

[PR]WAFの導入はHASHコンサルティング Sturts1 / Struts2 の脆弱性にも対応

日々の生活にhappyをプラスする|ハピタス

このエントリーをはてなブックマークに追加

LINEで送る

nandani | 2014年09月23日 | コメント(0) | トラックバック(0) | PHP関連

トラックバック

トラックバックURL

コメントする

※メールアドレスが公開されることはありません。

名前 *
メール*
URL
Copyright(c) 2010 - 2024 ダリの雑記