SYNCER

SYNCER

htmlspecialchars() - 特殊な文字だけをHTMLエンティティに変換する

公開日:

htmlspecialcharsは、例えばタグとして利用される<>など、HTMLにおいて特殊な意味を持つ文字だけを対象に、HTMLエンティティに変換する関数です。

構文

string htmlspecialchars ( 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エンティティに変換する

htmlentities()とは違って、HTMLにおいて特殊な意味を持つ文字だけを対象に、HTMLエンティティに変換します。例えば下記の場合、©は変換対象になりません。

php

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

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

	// 結果
	var_dump( $result ) ;

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

string(39) "&lt;b&gt;&quot;©SYNCER&quot;&lt;/b&gt;"

変換フラグを指定する

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

php

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

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

	// 結果
	var_dump( $result ) ;

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

string(29) "&lt;b&gt;"©SYNCER"&lt;/b&gt;"

重ねての変換を拒否する

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

php

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

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

	// 結果
	var_dump( $result ) ;

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

string(5) "&amp;"

サンドボックス

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

string(39) "&lt;b&gt;&quot;©SYNCER&quot;&lt;/b&gt;"

参考リンク

  • PHP - 公式マニュアル。