htmlspecialcharsとhtmlentitiesの違い
htmlspecialcharsは<>&’”だけを変換する。
htmlentitiesは他も変換する。
C:>php -r "echo htmlentities(\"\xa3\", ENT_QUOTES);"
£
ちなみに変換テーブルは以下で確認できる。
C:>php -r "var_dump(get_html_translation_table (HTML_ENTITIES));"
C:>php -r "var_dump(get_html_translation_table (HTML_SPECIALCHARS));"
もしかしてShift_JISの半角カナ使ってるとアウトだったり?
C:>php -r "echo htmlentities('チョwww', ENT_QUOTES, 'SJIS');"
Á®www
Yes!
第3引数に文字コードをセットしないとSJISあたりで死にます。
C:>php -r "echo htmlentities('技能一覧', ENT_QUOTES);"
技能・ecirc;覧
C:>php -r "echo htmlentities('技能一覧', ENT_QUOTES, 'SJIS');"
技能一覧
C:>php -r "echo htmlspecialchars('技能一覧', ENT_QUOTES);"
技能一覧
C:>php -r "echo htmlspecialchars('技能一覧', ENT_QUOTES, 'SJIS');"
技能一覧
3つめの結果はたまたまうまく変換できている程度で。
ENT_QUOTESが必須であるのは既に市民権を得て周知なことなのでいいですが、第3引数あたりも知っていたほうが良いと思います。