SYNCER

SYNCER

htmlentities() - 変換可能な文字を全てHTMLエンティティに変換する

公開日:

htmlentitiesは、変換可能な文字を全てHTMLエンティティに変換する関数です。

構文

string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )

パラメータ

$string

対象の文字列。

$flags

初期値: ENT_COMPAT | ENT_HTML401

変換する特殊文字の種類。

ENT_COMPAT
ダブルクォートを含め、シングルクォートを含めない。
ENT_QUOTES
シングルクォート、ダブルクォートのどちらも含める。
ENT_NOQUOTES
ダブルクォート、シングルクォートのどちらも含めない。
ENT_IGNORE
無効な符号単位シーケンスが含まれる時、 空の文字列を返すのではなく無効な部分を切り捨てる。
ENT_SUBSTITUTE
無効な符号単位シーケンスが含まれる時、 空の文字列を返すのではなUnicodeの代替文字に置換する。UTF-8の場合はU+FFFD、それ以外の場合は&#FFFD;となる。
ENT_DISALLOWED
指定した文書型において無効な符号位置を、Unicodeの代替文字に置換する。UTF-8の場合はU+FFFD、それ以外の場合は&#FFFD;となる。
ENT_HTML401
HTML4.01のドキュメントに適したテーブル。
ENT_XML1
XML1のドキュメントに適したテーブル。
ENT_XHTML
XHTMLのドキュメントに適したテーブル。
ENT_HTML5
HTML5のドキュメントに適したテーブル。

$encoding

初期値: ini_get("default_charset")

使用する文字エンコーディング。

$double_encode

初期値: true

既存のHTMLエンティティを、重ねて変換するか?

返り値

string

HTMLエンティティに変換した文字列。

サンプルコード

HTMLエンティティに変換する

htmlspecialchars()とは違って、特殊な文字だけではなく、可能な文字の全てを対象にして、HTMLエンティティに変換します。

php

<?php
	// 文字列
	$str = '<b>"©SYNCER"</b>' ;

	// 実行
	$result = htmlentities( $str ) ;

	// 結果
	var_dump( $result ) ;

結果 (出力内容) - PHP7.0.21

string(43) "&lt;b&gt;&quot;&copy;SYNCER&quot;&lt;/b&gt;"

変換フラグを指定する

第2引数に定数を指定すれば、変換方法を調整できます。例えば、ENT_NOQUOTESを指定すると、シングルクォート、ダブルクォートは変換の対象になりません。

php

<?php
	// 文字列
	$str = '<b>"©SYNCER"</b>' ;

	// 実行
	$result = htmlentities( $str, ENT_NOQUOTES ) ;

	// 結果
	var_dump( $result ) ;

結果 (出力内容) - PHP7.0.21

string(33) "&lt;b&gt;"&copy;SYNCER"&lt;/b&gt;"

重ねての変換を拒否する

通常、&のエンティティである&amp;を変換にかけると、当然、&amp;amp;というように重ねて変換されてしまいます。第4引数にfalseを指定することで、この重ねての変換を拒否できます。

php

<?php
	// 文字列
	$str = '&amp;' ;

	// 実行
	$result = htmlentities( $str, ENT_NOQUOTES, "UTF-8", false ) ;

	// 結果
	var_dump( $result ) ;

結果 (出力内容) - PHP7.0.21

string(5) "&amp;"

サンドボックス

ソースコードを編集してhtmlentities()の挙動を確認して下さい。

string(43) "&lt;b&gt;&quot;&copy;SYNCER&quot;&lt;/b&gt;"

参考リンク

  • PHP - 公式マニュアル。