首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP htmlentities() 函數完整手冊:定義、參數、編碼支援與實例詳解

     編輯:PHP 相關知識

htmlentities() 將字串中所有可轉換的字符轉為 HTML 實體(如 < → &lt;、" → &quot;),是防止 XSS、安全輸出的基礎函數。本文系統整理語法、四大參數、支援字元集、旗標行為與多組實例。

函數原型

htmlentities(string $string, int $flags = ENT_COMPAT | ENT_HTML401, string $encoding = 'UTF-8', bool $double_encode = true): string

參數詳解

flags:引號處理、無效編碼策略、文檔類型

常數說明
ENT_COMPAT預設,僅編碼雙引號
ENT_QUOTES編碼雙引號與單引號
ENT_NOQUOTES不編碼任何引號
ENT_IGNORE忽略無效編碼(不建議,有安全風險)
ENT_SUBSTITUTE無效編碼替換為 Unicode 替代字元 U+FFFD
ENT_DISALLOWED針對指定文檔類型的無效碼點替換
ENT_HTML401預設,按 HTML 4.01 處理
ENT_HTML5按 HTML5 處理
ENT_XML1按 XML 1 處理
ENT_XHTML按 XHTML 處理

character-set:支援字元集

  • UTF-8(預設)、ISO-8859-1、ISO-8859-15、cp866、cp1251、cp1252、KOI8-R、BIG5、GB2312、BIG5-HKSCS、Shift_JIS、EUC-JP、MacRoman
  • PHP 5.4+ 無法識別字元集改用 UTF-8;5.4 前改用 ISO-8859-1

double_encode

  • true(預設):已為實體的字符再次編碼
  • false:跳過已為實體的字符

技術細節

  • 回傳:轉換後字串;若含無效編碼且未設 ENT_IGNORE/ENT_SUBSTITUTE 則回傳空字串
  • PHP 版本:4+
  • 更新日誌:5.4 新增 ENT_SUBSTITUTE/ENT_DISALLOWED/ENT_HTML401/ENT_HTML5/ENT_XML1/ENT_XHTML;5.3 新增 ENT_IGNORE;5.2.3 新增 double_encode;4.1 新增 character-set

實例

範例 1:引號旗標差異

<?php
$str = "Bill & 'Steve'";
echo htmlentities($str, ENT_COMPAT); // 僅雙引號
echo htmlentities($str, ENT_QUOTES); // 雙引號+單引號
echo htmlentities($str, ENT_NOQUOTES); // 不編碼引號
?>

瀏覽器輸出皆為 Bill & 'Steve',但原始碼中引號實體化程度不同。

範例 2:指定字元集處理特殊字符

<?php
$str = "My name is Øyvind Åsane. I'm Norwegian.";
echo htmlentities($str, ENT_QUOTES, "ISO-8859-1");
?>

輸出:My name is &Oslash;yvind &Aring;sane. I'm Norwegian.

反向操作

需將實體還原為字符,請使用 html_entity_decode();查看轉換表請用 get_html_translation_table()。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved