HTMLのエンコードとデコードメモ

HTMLをそのままDBに格納する場合のメモ
自分用メモなので読みずらさはご容赦を。

エンコードは
htmlspecialchars (ストリング, flags);

flagsは
ENT_COMPAT
ダブルクオートは変換しますがシングルクオートは変換しません。
ENT_QUOTES
シングルクオートとダブルクオートを共に変換します。
ENT_NOQUOTES
シングルクオートとダブルクオートは共に変換されません。
ENT_IGNORE
無効な符号単位シーケンスを含む文字列を渡したときに、 空の文字列を返すのではなく無効な部分を切り捨てるようになります。 このフラグは使わないようにしましょう。 » セキュリティの問題が発生する可能性があります。
ENT_SUBSTITUTE
無効な符号単位シーケンスを含む文字列を渡したときに、 空の文字列を返すのではなく Unicode の置換文字に置き換えます。 UTF-8 の場合は U+FFFD、それ以外の場合は � となります。
ENT_DISALLOWED
指定した文書型において無効な符号位置を、Unicode の代替文字である U+FFFD (UTF-8) あるいは � で置き換えます。 これを設定しなければ、無効な符号位置をそのまま残します。 これは、外部コンテンツを埋め込んだ XML 文書を整形式に保つために有用です。
ENT_HTML401
コードを HTML 4.01 として処理します。
ENT_XML1
コードを XML 1 として処理します。
ENT_XHTML
コードを XHTML として処理します。
ENT_HTML5
コードを HTML 5 として処理します。

デコードは
htmlspecialchars_decode (ストリング, flags);

使用可能な flags 定数

ENT_COMPAT
ダブルクォートを変換し、シングルクォートはそのままにします。
ENT_QUOTES
ダブルクォート、シングルクォートの両方を変換します。
ENT_NOQUOTES
ダブルクォート、シングルクォートの両方をそのままにします。
ENT_HTML401
コードを HTML 4.01 として処理します。
ENT_XML1
コードを XML 1 として処理します。
ENT_XHTML
コードを XHTML として処理します。
ENT_HTML5
コードを HTML 5 として処理します。

全ての文字をエンコードしたければ

htmlentities()
この関数はhtmlspecialchars()と同じですが、 HTML エンティティと等価な意味を有する文字をHTMLエンティティに変換します。

もしデコード (逆の処理) をしたい場合、 html_entity_decode() を使用することができます。

利用可能な flags 定数
ENT_COMPAT
ダブルクオートは変換しますがシングルクオートは変換しません。
ENT_QUOTES
シングルクオートとダブルクオートを共に変換します。
ENT_NOQUOTES
シングルクオートとダブルクオートは共に変換されません。
ENT_IGNORE 無効な符号単位シーケンスを含む文字列を渡したときに、 空の文字列を返すのではなく無効な部分を切り捨てるようになります。 このフラグは使わないようにしましょう。 » セキュリティの問題が発生する可能性があります。
ENT_SUBSTITUTE
無効な符号単位シーケンスを含む文字列を渡したときに、 空の文字列を返すのではなく Unicode の置換文字に置き換えます。 UTF-8 の場合は U+FFFD、それ以外の場合は &#FFFD; となります。
ENT_DISALLOWED
指定した文書型において無効な符号位置を、Unicode の代替文字である U+FFFD (UTF-8) あるいは &#FFFD; で置き換えます。 これを設定しなければ、無効な符号位置をそのまま残します。 これは、外部コンテンツを埋め込んだ XML 文書を整形式に保つために有用です。
ENT_HTML401
コードを HTML 4.01 として処理します。
ENT_XML1
コードを XML 1 として処理します。
ENT_XHTML
コードを XHTML として処理します。
ENT_HTML5
コードを HTML 5 として処理します。


記事id:853 / 7664PV

関連記事