當前位置: 首頁> 最新文章列表> PHP函數介紹—htmlspecialchars(): 轉義字符串中的特殊字符

PHP函數介紹—htmlspecialchars(): 轉義字符串中的特殊字符

M66 2025-06-05

PHP中htmlspecialchars() 函數的作用與用法詳解

在Web 開發過程中,用戶輸入的內容往往直接用於頁面展示或數據交互。為了防止惡意腳本注入等安全問題,開發者必須對這些輸入數據進行嚴格處理。 htmlspecialchars()是PHP 中用於轉義字符串中特殊字符的重要函數,可以有效地防止XSS(跨站腳本攻擊)等安全隱患。

函數語法結構


string htmlspecialchars(
    string $string,
    int $flags = ENT_COMPAT | ENT_HTML401,
    string $encoding = "UTF-8",
    bool $double_encode = true
)
  • $string :必填,要進行轉義的字符串。
  • $flags :可選,定義如何處理引號,默認值為ENT_COMPAT | ENT_HTML401
  • $encoding :可選,指定字符編碼,默認使用UTF-8。
  • $double_encode :可選,設置是否允許對已編碼的實體再次編碼,默認值為true。

轉義字符類型

該函數會將以下特殊字符轉義為HTML 實體:

  • &轉換為&
  • "轉換為"
  • '轉換為' (在某些配置中)
  • <轉換為<
  • >轉換為>

通過這些轉義,可以有效防止惡意腳本在瀏覽器中被執行。

使用示例

示例1:基本的特殊字符轉義


$input = '<script>alert("Hello!");</script>';
$output = htmlspecialchars($input);
echo $output;
// 輸出:<script>alert("Hello!");</script>

這個例子中,HTML 標籤被安全地轉義,瀏覽器將其作為純文本而非腳本執行。

示例2:處理單引號和雙引號


$input = 'I\'m "John"';
$output = htmlspecialchars($input, ENT_QUOTES);
echo $output;
// 輸出:I'm "John"

設置ENT_QUOTES參數後,單引號和雙引號都將被轉義,適用於屬性輸出等場景。

示例3:指定字符編碼


$input = '中文字符';
$output = htmlspecialchars($input, ENT_QUOTES, 'GBK');
echo $output;
// 輸出:中文字符

如果指定的字符編碼與輸入數據的實際編碼一致,那麼中文等多字節字符不會被錯誤轉義。

示例4:禁止雙重轉義


$input = 'special & character';
$output = htmlspecialchars($input, ENT_QUOTES, 'UTF-8', false);
echo $output;
// 輸出:special & character

設置$double_encodefalse可以防止已轉義的實體再次被編碼,保持輸出內容的可讀性。

總結

htmlspecialchars()是PHP 提供的一個重要函數,用於確保用戶輸入在頁面中的安全輸出。通過合理設置參數,可以靈活地應對不同編碼和轉義需求,有效地提升應用程序的安全性。在處理表單輸入、動態內容輸出等場景中,推薦開發者優先考慮使用該函數來避免潛在的XSS 攻擊。