PHP htmlspecialchars 基本語法
string htmlspecialchars( $string , $quote_flags , $encoding , $double_encode )
參數表$string | 必填項目,即為要轉換的字串。 |
$quote_flags | 選填項目,用來設定引號的轉換規則,以下三項為常見的設定參數。
|
$encoding | 選擇項目,設定轉換的編碼,PHP 5.4.0 以前的版本預設編碼為 ISO-8859-1,而 PHP 5.4.0 以後的版本則預設為萬國碼 UTF-8。 |
$double_encode | 選擇項目,如果將此功能關閉,則 htmlspecialchars 不會轉換原本就存在的 HTML 符號,預設是全部轉換。 |
PHP htmlspecialchars 轉換結果
- 字串連接符號(&)轉換為 &
- 雙引號(")轉換為 "。前題是引號參數不能設定為 ENT_NOQUOTES。
- 單引號(')轉換為 '。只有在引號參數設定為 ENT_QUOTES 時,才會轉換單引號。
- 大於符號(>)轉換為 >
- 小於符號(<)轉換為 <
<?php
$string_1 = htmlspecialchars("這是測試\'這是測試\"", ENT_COMPAT);
echo $string_1.'<br>';
$string_2 = htmlspecialchars("這是測試\'這是測試\"", ENT_QUOTES);
echo $string_2.'<br>';
$string_3 = htmlspecialchars("這是測試\'這是測試\"", ENT_NOQUOTES);
echo $string_3.'<br>';
?>
以上輸出結果如$string_1 = htmlspecialchars("這是測試\'這是測試\"", ENT_COMPAT);
echo $string_1.'<br>';
$string_2 = htmlspecialchars("這是測試\'這是測試\"", ENT_QUOTES);
echo $string_2.'<br>';
$string_3 = htmlspecialchars("這是測試\'這是測試\"", ENT_NOQUOTES);
echo $string_3.'<br>';
?>
這是測試\'這是測試"
這是測試\'這是測試"
這是測試\'這是測試"
實際開啟網頁原始碼可以看到這樣的內容這是測試\'這是測試"
這是測試\'這是測試"
上面原始碼的 <br> 代表 HTML 換行的意思,第一次輸出 $string_1 的轉換結果,由於設定了引號參數 ENT_COMPAT,所以只會轉換單引號,接著輸出 $string_2 時,引號參數設定為 ENT_QUOTES,所以單引號與雙引號都成功轉換,最後輸出 $string_3,引號參數設定為 ENT_NOQUOTES,代表遇到引號都不轉換。假設不設定引號參數,輸出結果將與預設值 ENT_COMPAT 的結果相同。
PHP htmlspecialchars 相關主題研究