php htmlentities 將特殊字串轉換為HTML字串

輸入字串的時候有時候會輸入特殊字串,這時候只好進行字串的傳換,
如果是要存進DB裡面,可以透過mysqli_real_escape_string(); 將次串進行轉換。
而PHP內建的字串轉換函數為 htmlentities($test );
根據htmlentities的說明,htmlentities包含了以下四個參數
string htmlentities ( string $string
[, int $flags = ENT_COMPAT | ENT_HTML401
[, string $encoding = ini_get(“default_charset”)
[, bool $double_encode = true ]]] )

需要注意第二個參數flags(可察看下表),如果未設定flags時,
預設為ENT_COMPAT,會轉換雙引號,不轉換單引號, 需要特別注意

有效 flags 標記常量
常量名 描述
ENT_COMPAT 會轉換雙引號,不轉換單引號。
ENT_QUOTES 既轉換雙引號也轉換單引號。
ENT_NOQUOTES 單/雙引號都不轉換
ENT_IGNORE 靜默丟棄無效的代碼單元序列,而不是返回空字串。 不建議使用此標記, 因為它可能有安全影響。
ENT_SUBSTITUTE 替換無效的代碼單元序列為 Unicode 代替符(Replacement Character), U+FFFD (UTF-8) 或者 � (其他),而不是返回空字串。
ENT_DISALLOWED 為文檔的無效代碼點替換為 Unicode 代替符(Replacement Character): U+FFFD (UTF-8),或 �(其他),而不是把它們留在原處。 比如以下情況下就很有用:要保證 XML 文檔嵌入額外內容時格式合法。
ENT_HTML401 以 HTML 4.01 處理代碼。
ENT_XML1 以 XML 1 處理代碼。
ENT_XHTML 以 XHTML 處理代碼。
ENT_HTML5 以 HTML 5 處理代碼。

節錄自 http://php.net/manual/zh/function.htmlentities.php

發佈留言