在PHP 開發中,確保數據的合法性和安全性至關重要,尤其是用戶輸入的數據。 PHP 提供了多種內建過濾器,其中FILTER_SANITIZE_NUMBER_FLOAT是專用於清洗包含浮點數的字符串的常量。它能去除字符串中除數字、小數點、正負號之外的所有字符,常用於表單數據預處理、API 接收參數等場景。
FILTER_SANITIZE_NUMBER_FLOAT 的標準使用方式如下:
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, $filter_options);
參數說明:
$number = "5a.1b4 2c2";
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT);
echo $sanitized_number;
輸出結果:
<span class="fun">5.1422</span>
該示例中,原始字符串中的非數字字符被清除,只保留合法的數字和小數點。
通過使用過濾標誌,可以進一步控制輸出結果的格式。
$number = "8.9000";
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_STRIP_TAIL);
echo $sanitized_number;
輸出結果:
<span class="fun">8.9</span>
此處的FILTER_FLAG_STRIP_TAIL將尾部冗餘的小數部分去除,提升了數據的整潔度。
在某些國際化應用中,小數點可能不是. ,例如歐洲國家可能使用, 。 PHP 允許通過選項設置自定義小數點。
$number = "8,9";
$filter_options = array("decimal" => ",");
$sanitized_number = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, array("options" => $filter_options));
echo $sanitized_number;
輸出結果:
<span class="fun">8.9</span>
通過設置"decimal" => "," ,過濾器識別逗號為小數點,正確解析數字。
FILTER_SANITIZE_NUMBER_FLOAT 是PHP 中處理浮點數型字符串數據的重要工具,它能有效地過濾非數字字符、保留小數符號,並支持靈活的選項配置。無論是進行數據驗證、格式標準化,還是提高數據處理的健壯性,它都是開發者手中的利器。