echo esc_html('<a href="https://example.com">Link</a>');
// 輸出:<a href="https://example.com">Link</a>
// 瀏覽器顯示:Link
< > & " ' 轉為 HTML 實體echo esc_url('www.example.com'); // https://www.example.com (補全協議)
echo esc_url('javascript:alert(1)'); // 空字串(拒絕危險協議)
echo esc_url('https://example.com/?a=1&b=2'); // 保留並實體化 & → &
$_context:'display' (預設,實體化) / 'attribute' (屬性用,雙重編碼) / 'db' (入庫存儲)| 函數 | 用途 | 典型場景 | 輸出範例 |
|---|---|---|---|
esc_html | 文本節點/屬性 | 用戶輸入顯示、標題、摘要 | <script> |
esc_attr | HTML 屬性值 | value="...", title="..." | 同 esc_html |
esc_url | 鏈接 href/src | a href, img src, form action | https://... |
esc_js | JS 字串字面量 | onclick="...", var x = '...' | 轉義換行、引號、反斜線 |
esc_textarea | textarea 內容 | 編輯器初始值 | 轉義實體 |
sanitize_* 驗證)esc_*esc_html,否則重複編碼導致顯示錯誤wp-includes/formatting.php — 可閱讀實現細節(如 esc_url 內部用 wp_kses_bad_protocol 過濾協議)。
esc_html 保護 XSS,esc_url 保護鏈接劫持。牢記「輸出時轉義、按上下文選函數」,WordPress 主題/插件安全性大幅提升。