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エンティティに変換することが可能です。
$result = htmlentities(
文字列,
変換する種類 デフォルト: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
以下は、エンティティを持つ文字を全てHTMLエンティティに変換するサンプルコードとなります。
<?php
$str = "<a href=\"https://mebee.info/\">link</a>";
$result = htmlentities($str);
print_r($result); // <a href="https://mebee.info/">link</a>
元のhtmlに戻す場合は、html_entity_decodeを使用します。
<?php
$str = "<a href="https://mebee.info/">link</a>";
$result = html_entity_decode($str);
print_r($result); // <a href="https://mebee.info/">link</a>
また「&」を変換した場合「&」が「&」に変換されて「&amp;」となるので、
<?php
$str = "&";
$result = htmlentities($str);
print_r($result); // &amp;
第四引数を「false」に指定することにより「&」と表示されます。
<?php
$str = "&";
$result = htmlentities($str, ENT_COMPAT | ENT_HTML401,ini_get("default_charset"),false);
print_r($result); // &
-
前の記事
Nuxt.js ライブラリ「vue-currency-directive」をインストールして通貨フォーマットを設定する 2020.12.08
-
次の記事
javascript parseIntを使わないで16進数を10進数に変換する 2020.12.08
コメントを書く