php htmlspecialcharsでHTMLエンティティ化する
phpで、htmlspecialcharsを使用して、HTMLエンティティ化するサンプルコードを記述してます。phpのバージョンは8.0です。
環境
- OS CentOS Linux release 8.0.1905 (Core)
- php 8.0.0
- nginx 1.14.1
htmlspecialchars使い方
htmlspecialcharsを使用すれば、HTMLエンティティ化することが可能です。
$result = htmlspecialchars(
文字列,
変換する種類 デフォルト:ENT_COMPAT | ENT_HTML401,
エンコード デフォルト:ini_get("default_charset"),
既存のhtmlエンティティをエンコードするか:デフォルト TRUE);
使用できる第二引数は以下となります。
- 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
htmlspecialcharsの基本的な変換テーブルは以下となります。
var_dump(get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES));
array(5) {
'"' =>
string(6) """
'&' =>
string(5) "&"
'\'' =>
string(6) "'"
'<' =>
string(4) "<"
'>' =>
string(4) ">"
}
以下は、HTMKをHTMLエンティティ化サンプルコードとなります。
<?php
$str = "<a href=\"https://mebee.info/\">link</a>";
$result = htmlspecialchars($str);
print_r($result); // <a href="https://mebee.info/">link</a>
元のhtmlに戻す場合は、htmlspecialchars_decodeを使用します。
<?php
$str = "<a href="https://mebee.info/">link</a>";
$result = htmlspecialchars_decode($str);
print_r($result); // <a href="https://mebee.info/">link</a>
また「&」を変換した場合「&」が「&」に変換されて「&amp;」となるので、
<?php
$str = "&";
$result = htmlspecialchars($str);
print_r($result); // &amp;
第四引数を「false」に指定することにより「&」と表示されます。
<?php
$str = "&";
$result = htmlspecialchars($str, ENT_COMPAT | ENT_HTML401,ini_get("default_charset"),false);
print_r($result); // &
-
前の記事
javascript lodashを使って実行する関数の引数をindex番号で指定する 2021.10.10
-
次の記事
React.js ライブラリ「react-jsbarcode」を使ってバーコードを実装する 2021.10.10
コメントを書く