最近自己寫了過濾類,主要利用率了filter函數。請指教!
<?php
/**
* 參數驗證類
* @author bob <[email protected]>
*
* @version $Id $
*/
class Filter
{
/**
* 變量類型
*/
public static $varType = array(
'GET' => INPUT_GET,
'POST' => INPUT_POST,
'COOKIE' => INPUT_COOKIE,
'SERVER' => INPUT_SERVER,
'ENV' => INPUT_ENV
);
/**
* 字符類型
*
*/
public static $filterType = array(
'STRING' => FILTER_SANITIZE_STRING,
'INT' => FILTER_VALIDATE_INT,
'BOOLEAN' => FILTER_VALIDATE_BOOLEAN,
'FLOAT' => FILTER_VALIDATE_FLOAT,
'REGEXP' => FILTER_VALIDATE_REGEXP,
'URL' => FILTER_VALIDATE_URL,
'EMAIL' => FILTER_VALIDATE_EMAIL,
'IP' => FILTER_VALIDATE_IP,
);
/**
* 檢查是否存在指定輸入類型的變量
*
* @param string $setVarType 類型 post get ……
* @param string $varName key
*
* @return void
*/
public static function varExists($setVarType, $varName)
{
$FilterVarType = self::_getVarType($setVarType);
if (is_null($FilterVarType)) {
return false;
}
return filter_has_var(self::$varType[$FilterVarType], $varName);
}
/**
* 過濾外部變量
*
* @param string $setVarType 類型 post get ……
* @param string $varName key
* @param string $filterType filter type
*
* @return void
*/
public static function filterInput($setVarType, $varName, $filterType = 'INT')
{
$FilterVarType = self::_getVarType($setVarType);
$filterType = self::_getFilterType($filterType);
if (is_null($FilterVarType) || is_null($filterType)) {
return false;
}
return filter_input($FilterVarType, $varName, $filterType);
}
/**
* 通過指定的過濾器過濾變量
*
* @param string $var 變量
* @param string $filterType 變量類型
*
* @return void
*/
public static function filterVar($var, $filterType)
{
if (!trim($var)) {
return false;
}
$filterType = self::_getFilterType($filterType);
return filter_var($var, $filterType);
}
/**
* 驗證是字符串
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isString($var)
{
return self::filterVar($var, 'STRING');
}
/**
* 驗證是整形
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isInt($var)
{
return self::filterVar($var, 'INT');
}
/**
* 驗證是布爾型
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isBoolean($var)
{
return self::filterVar($var, 'BOOLEAN');
}
/**
* 驗證是浮點型
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isFloat($var)
{
return self::filterVar($var, 'FLOAT');
}
/**
* 驗證URL格式
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isUrl($var)
{
return self::filterVar($var, 'URL');
}
/**
* 驗證EMAIL格式
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isEmail($var)
{
return self::filterVar($var, 'EMAIL');
}
/**
* 驗證手機號格
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isPhone($var)
{
$filterType = 'regexp';
$regexp = array('options' => array("regexp" => '/^[1][358][0-9]{9}$/'));
return self::regexp($var, $filterType, $regexp);
}
/**
* 驗證IP格式
*
* @param string $var 要驗證字符
*
* @return void
*/
public static function isIp($var)
{
return self::filterVar($var, 'IP');
}
/**
* 正則校驗變量類型
*
* @param string $var 變量
* @param array $option array("options"=>array("regexp"=>"/^d(.*)/"))
*
* @return void
*/
public static function regexp($var, $filterType, $option)
{
$filterType = self::_getFilterType($filterType);
return filter_var($var, $filterType, $option);
}
/**
* 驗證類型
*
* @param string $type
*
* @return bool
*/
public static function filterType($type)
{
$filter_list = self::_lists();
return array_search($type, $filter_list) !== false ? true : false;
}
/**
* 過濾字符串中的html標籤
*
* @param string $string 待轉換的字符串
*
* @return string
*/
static public function stripTags($string)
{
return strip_tags($string);
}
/**
* 過濾字符串中的回車換行
*
* @param string $string 待轉換的字符串
*
* @return string
*/
static public function stripLines($string)
{
return str_replace(array("\n", "\r"), '', $string);
}
/**
* 過濾字符串中<script>腳本
*
* @param string $string 待過濾的字符串
*
* @return string
*/
static public function stripScript($string)
{
$reg = "/<script[^>]*?>.*?<\/script>/is";
return preg_replace($reg, '', $string);
}
/**
* 獲取字符類型
*
* @return array
*/
private static function _lists()
{
return filter_list();
}
/**
* 驗證請求類型
*
* @param string $setVarType 變量類型 eg:post , get
*
* @return void
*/
private static function _getVarType($setVarType)
{
$setVarType = strtoupper($setVarType);
return isset(self::$varType[$setVarType]) ? self::$varType[$setVarType] : null;
}
/**
* 驗證字符類型
*
* @param string $setFilterType 字符類型 eg:int, string, url
*
* @return void
*/
private static function _getFilterType($setFilterType)
{
$setFilterType = strtoupper($setFilterType);
return isset(self::$filterType[$setFilterType]) ? self::$filterType[$setFilterType] : null;
}
}