字串函式 htmlspecialchars ()

eternal_strong發表於2020-05-14

htmlspecialchars() 把預定義的字元 “<” (小於)和 “>” (大於)轉換為 HTML 實體

htmlspecialchars(string $string, int flags, string character-set, bool double_encode): string

預定義字元:

& (和號)成為 &
" (雙引號)成為 "
' (單引號)成為 '
< (小於)成為 <
> (大於)成為 >
引數 描述
string 必需。規定要轉換的字串。
flags 可選。規定如何處理引號、無效的編碼以及使用哪種文件型別。
可用的引號型別:
ENT_COMPAT - 預設。僅編碼雙引號。
ENT_QUOTES - 編碼雙引號和單引號。
ENT_NOQUOTES - 不編碼任何引號。
無效的編碼:
ENT_IGNORE - 忽略無效的編碼,而不是讓函式返回一個空的字串。應儘量避免,因為這可能對安全性有影響。
ENT_SUBSTITUTE - 把無效的編碼替代成一個指定的帶有 Unicode 替代字元 U+FFFD(UTF-8)或者 FFFD; 的字元,而不是返回一個空的字串。
ENT_DISALLOWED - 把指定文件型別中的無效程式碼點替代成 Unicode 替代字元 U+FFFD(UTF-8)或者 FFFD;。
規定使用的文件型別的附加 flags:
ENT_HTML401 - 預設。作為 HTML 4.01 處理程式碼。
ENT_HTML5 - 作為 HTML 5 處理程式碼。
ENT_XML1 - 作為 XML 1 處理程式碼。
ENT_XHTML - 作為 XHTML 處理程式碼。
character-set 可選。一個規定了要使用的字符集的字串。
允許的值:
UTF-8 - 預設。ASCII 相容多位元組的 8 位 Unicode
ISO-8859-1 - 西歐
ISO-8859-15 - 西歐(加入歐元符號 + ISO-8859-1 中丟失的法語和芬蘭語字母)
cp866 - DOS 專用 Cyrillic 字符集
cp1251 - Windows 專用 Cyrillic 字符集
cp1252 - Windows 專用西歐字符集
KOI8-R - 俄語
BIG5 - 繁體中文,主要在臺灣使用
GB2312 - 簡體中文,國家標準字符集
BIG5-HKSCS - 帶香港擴充套件的 Big5
Shift_JIS - 日語
EUC-JP - 日語
MacRoman - Mac 作業系統使用的字符集
註釋:在 PHP 5.4 之前的版本,無法被識別的字符集將被忽略並由 ISO-8859-1 替代。自 PHP 5.4 起,無法被識別的字符集將被忽略並由 UTF-8 替代。
double_encode 可選。布林值,規定了是否編碼已存在的 HTML 實體。
TRUE - 預設。將對每個實體進行轉換。
FALSE - 不會對已存在的 HTML 實體進行編碼。

返回值:
返回被轉換的字串。如果 string 包含無效的編碼,則返回一個空的字串,除非設定了 ENT_IGNORE 或者 ENT_SUBSTITUTE 標誌。

$str = "Bill & 'Steve'";

//Bill &amp; 'Steve' 預設。僅編碼雙引號
echo htmlspecialchars($str).'<br>';

//Bill &amp; &#039;Steve&#039; 編碼雙引號和單引號
echo htmlspecialchars($str,ENT_QUOTES);

$str1 = 'Bill & <"steve"> <script>alert(111);</script>';

// Bill &amp; &lt;&quot;steve&quot;&gt; &lt;script&gt;alert(111);&lt;/script&gt; 預設。僅編碼雙引號
echo htmlspecialchars($str1);
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章