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_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

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

$double_encode

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

返り値

string

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

サンプルコード

<?php
	$string = '<b>"©SYNCER"</b>' ;

	$response = htmlspecialchars( $string ) ;

デモ

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

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

<?php
/*** このコードは編集できます。 ***/

	$string = '<b>"©SYNCER"</b>' ;

	$response = htmlspecialchars( $string ) ;

	var_dump( $response ) ;
string(39) "<b>"©SYNCER"</b>"

変換フラグを指定する

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

<?php
/*** このコードは編集できます。 ***/

	$string = '<b>"©SYNCER"</b>' ;

	$response = htmlspecialchars( $string, ENT_NOQUOTES ) ;

	var_dump( $response ) ;
string(29) "<b>"©SYNCER"</b>"

重ねての変換を拒否する

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

<?php
/*** このコードは編集できます。 ***/

	$string = '&amp;' ;

	$response = htmlspecialchars( $string, ENT_NOQUOTES, "UTF-8", false ) ;

	var_dump( $response ) ;
string(5) "&"
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年6月26日 (月)
コンテンツを公開しました。