ホーム > 日記 > htmlspecialcharsとhtmlentitiesの違い

htmlspecialcharsとhtmlentitiesの違い

htmlspecialcharsは<>&'”だけを変換する。
htmlentitiesは他も変換する。


C:>php -r "echo htmlentities(\"\xa3\", ENT_QUOTES);"
&pound; 

ちなみに変換テーブルは以下で確認できる。


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');"
&Aacute;&reg;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引数あたりも知っていたほうが良いと思います。

カテゴリー: 日記 タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。