有兩個問題。
首先,您使用htmlentities
和htmlspecialchars
兩種編碼HTML字符。這兩個函數都做同樣的事情,但是htmlspecialchars
只對具有HTML字符實體等價物的字符子集(特殊那些)起作用。因此,以您的示例爲例,該和號將被編碼兩次(因爲它是特殊字符),所以你會真正得到是:
$example = 'Welcome & This is a test paragraph';
$example = htmlentities($example);
var_dump($example); // 'Welcome & This is a test paragraph'
$example = htmlspecialchars($example);
var_dump($example); // 'Welcome & This is a test paragraph'
決定其中那些你需要使用的功能之一(可能htmlspecialchars
就足夠了),並且只使用其中的一個。
其次,您在錯誤的時間使用這些功能。 htmlentities
和htmlspecialchars
將不會做任何事情「清理」您的數據輸入到您的數據庫。 (並不是說這就是你的意圖,因爲你沒有提到這一點,但很多人似乎都試圖做到這一點。)如果你想保護自己免受SQL注入,bind your values to prepared statements.逃脫它,因爲你正在與mysqli_real_escape_string
是好的,但它不是真的足夠。
htmlspecialchars
和htmlentities
具有特定的用途:將要輸出的字符串中的字符轉換爲HTML文檔。只要等待,直到你準備好做到這一點。
'html_entity_decode'與'htmlentities'是對應的,順便說一句:更好地改變你的sql使用準備好的語句並綁定'$ _POST ['text']'因爲它是查詢。我對你原始數據進行了修改。 – JustOnUnderMillions
爲什麼要這樣做?插入數據不變,並修改它的目的,顯示等。 – AbraCadaver