php htmlentitiesでエンティティを持つ文字を全てHTMLエンティティに変換する

php htmlentitiesでエンティティを持つ文字を全てHTMLエンティティに変換する

phpで、htmlentitiesを使用して、エンティティを持つ文字を全てHTMLエンティティに変換するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

htmlentities使い方

htmlentitiesを使用すれば、エンティティを持つ文字を全てHTMLエンティティに変換することが可能です。

使用できる第二引数は以下となります。

  • ENT_COMPAT : ダブルクォートを含めシングルクォートは含めない
  • ENT_QUOTES : ダブルクォートとシングルクォートの両方を含める
  • ENT_NOQUOTES : ダブルクォートとシングルクォートの両方を含めない
  • ENT_IGNORE : 基本使用しない。無効な符号単位シーケンスを含む文字列を渡した場合に、 空の文字列を返すのではなく無効な部分を切り捨てる。
  • ENT_SUBSTITUTE : 無効な符号単位シーケンスを含む文字列を渡した場合に、 空の文字列を返すのではなく Unicode の置換文字に置き換えられる。 UTF-8 の場合は U+FFFD、それ以外の場合は &#FFFD; となります。
  • ENT_DISALLOWED : 指定した文書型において無効な符号位置を、Unicode の代替文字である U+FFFD (UTF-8) あるいは &#FFFD; で置き換えられる。 これを設定しなければ、無効な符号位置をそのまま残る。
  • ENT_XML1 : XML 1
  • ENT_XHTML : XHTML
  • ENT_HTML5 : HTML 5

以下は、エンティティを持つ文字を全てHTMLエンティティに変換するサンプルコードとなります。

元のhtmlに戻す場合は、html_entity_decodeを使用します。

また「&」を変換した場合「&」が「&」に変換されて「&」となるので、

第四引数を「false」に指定することにより「&」と表示されます。