[PHP] 介紹 htmlentities() 函式

htmlentities()  函式的一個主要用意,就是在將使用者輸入的資料,在傳送出去時,將它編碼成安全的字串,以免被惡意值入不必要的程式,也就是俗稱的 Sanitize Input (HTML 的部份)。

例如以下範例程式:

<?php
$input = "<p><script>alert('這是警告訊息!');</script></p>";
echo htmlentities($input);
echo "\n";
echo htmlentities($input, ENT_QUOTES, 'UTF-8');
echo "\n";

在後端會取得如下的資料:

htmlentities() 的輸出結果

有沒有發現第一行跟第二行不一樣,在於單引號在第一行並沒有被正確的編碼;
要使用第二行的方式才行。

原因是 htmlentities() 在預設上,是不會將單引號編碼的,而要加上第二個參數 ENT_QUOTES 才行。
在 PHP 的官網有說明 htmlentities(),第二個參數預設是 ENT_COMPAT,只會將雙引號編碼,而單引號不會。

所以以後在傳送有 html 的資料的時候,務必使用:
htmlentities($input, ENT_QUOTES, ‘UTF-8’);

您可在此處留言

avatar

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

  Subscribe  
Notify of