コース推薦:

PHP htmlentities()関数

把字符转换为 HTML 实体:

<?php
例
$str = "<? W3S?h????>";
?>

以上のコードの HTML 出力は以下の通りです(ソースコードを確認):

<!DOCTYPE html>
<html>
<body>
echo htmlentities($str);
</body>
</html>

以上のコードのブラウザ出力は以下の通りです:

<© W3Sçh°°¦§>

<? W3S?h????>

定義と用法

ヒント:htmlentities()関数を使用して、文字をHTMLエンティティに変換します。 html_entity_decode()関数を使用して、HTMLエンティティを文字に戻します。 関数。

ヒント:使用してください。 get_html_translation_table() get_html_translation_table()関数を使用して、htmlentities()が使用する翻訳テーブルを返す関数。

文法

htmlentities(string,flags,character-set,double_encode)
パラメータ 説明
string 必須。変換する文字列を定義します。
flags

選択可能。引号の処理方法、無効なエンコードの処理方法、使用するドキュメントタイプを定義します。

利用可能な引用符の種類:

  • ENT_COMPAT - デフォルト。ただし、双引号のみをエンコード。
  • ENT_QUOTES - 双重引用符と単一引用符をエンコード。
  • ENT_NOQUOTES - 任何引号都不编码。

無効なエンコード:

  • ENT_IGNORE - 無効なエンコードを無視し、空の文字列を返す代わりに。安全性に影響を与える可能性があるため、避けられるべきです。
  • ENT_SUBSTITUTE - 無効なエンコードを指定されたUnicodeサブストラット文字U+FFFD(UTF-8)または&#FFFD;を持つ指定された文字に置き換えます。空の文字列を返す代わりに。
  • ENT_DISALLOWED - 指定されたドキュメントタイプの無効なコードポイントをUnicodeサブストラット文字U+FFFD(UTF-8)または&#FFFD;に置き換えます。

使用するドキュメントタイプの追加フラグを定義します:

  • ENT_HTML401 - デフォルト。HTML 4.01として処理するコード。
  • ENT_HTML5 - HTML 5として処理するコード。
  • ENT_XML1 - XML 1として処理するコード。
  • ENT_XHTML - XHTMLとして処理するコード。
character-set

選択可能。使用する文字集合を定義する文字列。

許可値:

  • UTF-8 - デフォルト。ASCII 互換の多バイトの 8 ビット Unicode
  • ISO-8859-1 - 西欧
  • ISO-8859-15 - 西欧(ユーロ記号を含む ISO-8859-1 に失われたフランス語とフィンランド語の文字を追加)
  • cp866 - DOS 専用のキリル文字集合
  • cp1251 - Windows 専用のキリル文字集合
  • cp1252 - Windows 専用の西欧文字集合
  • KOI8-R - ロシア語
  • BIG5 - 繁体字,主に台湾で使用
  • GB2312 - 簡体字,国家标准文字集合
  • BIG5-HKSCS - 香港拡張付きの Big5
  • Shift_JIS - 日本語
  • EUC-JP - 日本語
  • MacRoman - Mac 操作系统使用的字符集

注释:在 PHP 5.4 之前的版本,无法被识别的字符集将被忽略并由 ISO-8859-1 替代。自 PHP 5.4 起,无法被识别的字符集将被忽略并由 UTF-8 替代。

double_encode

可选。布尔值,规定是否编码已存在的 HTML 实体。

  • TRUE - 默认。将对每个实体进行转换。
  • FALSE - 不会对已存在的 HTML 实体进行编码。

技术细节

返回值:

返回被转换的字符串。

如果 string 包含无效的编码,则返回一个空的字符串,除非设置了 ENT_IGNORE 或者 ENT_SUBSTITUTE 标志。

PHP 版本: 4+
更新日志:

在 PHP 5 中,character-set 参数的默认值改为 UTF-8。

在 PHP 5.4 中,新增了:ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_HTML5、ENT_XML1 和 ENT_XHTML。

在 PHP 5.3 中,新增了 ENT_IGNORE。

在 PHP 5.2.3 中,新增了 double_encode 参数。

在 PHP 4.1 中,新增了 character-set 参数。

更多实例

例子 1

把字符转换为 HTML 实体:

<?php
$str = "Bill & 'Steve'";
echo htmlentities($str, ENT_COMPAT); // 只转换双引号
echo "<br>";
echo htmlentities($str, ENT_QUOTES); // 转换双引号和单引号
echo "<br>";
echo htmlentities($str, ENT_NOQUOTES); // 任何引号不转换
?>

以上のコードの HTML 出力は以下の通りです(ソースコードを確認):

<!DOCTYPE html>
<html>
<body>
Bill & 'Steve'<br>
Bill & 'Tarzan'<br>
Bill & 'Steve'
</body>
</html>

以上のコードのブラウザ出力は以下の通りです:

Bill & 'Steve'
Bill & 'Steve'
Bill & 'Steve'

运行实例

例 2

西欧の文字セットを使用して、一部の文字を HTML 実体に変換します:

<?php
$str = "私の名前はØyvind Øsaneです。ノルウェイ人です.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1"); 
// 双重引用符のみを変換し(単一引用符は変換しません)、西欧の文字セットを使用します
?>

以上のコードの HTML 出力は以下の通りです(ソースコードを確認):

<!DOCTYPE html>
<html>
<body>
私の名前はØyvind Øsaneです。ノルウェイ人です。
</body>
</html>

以上のコードのブラウザ出力は以下の通りです:

私の名前はØyvind Øsaneです。ノルウェイ人です。

运行实例