日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php 严格过滤,php 常用过滤类

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 严格过滤,php 常用过滤类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//$str = '漢hah子abc---ABC123_-';

//

if(!preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str)) //GB2312漢字字母數字下劃線正則表達式

//if(!preg_match('#^[\x{4e00}-\x{9fa5}A-Za-z0-9_-]+$#u',$str)) //UTF-8漢字字母數字下劃線正則表達式

//{

// echo "您輸入的[".$str."]含有違法字符";

//}else{

// echo "您輸入的[".$str."]完全合法,通過!";

//}

//

//exit;

//$email='afs###%-##@s.com';

//$result=filter_var($email,FILTER_VALIDATE_EMAIL);

//

//$str = 'abcDFSDF哈哈1323@#%#$%#%$^&&*^&*';

//$sss = filter_var($str, FILTER_SANITIZE_STRIPPED);

//

//var_dump($sss);

//exit;

/**

* @brief Filter 過濾

*/

class Filter

{

/**

* @brief 過濾字符串的長度

* @param string $str 被限制的字符串

* @param int $length 限制的字節數

* @return string 空:超出限制值; $str:原字符串;

*/

public static function limitLen($str,$length)

{

if($length !== false)

{

$count = IString::getStrLen($str);

if($count > $length)

{

return '';

}

else

{

return $str;

}

}

return $str;

}

/**

* @brief 對字符串進行過濾處理

* @param string $str 被過濾的字符串

* @param string $type 過濾數據類型 值: int, float, string, text, bool, url

* @param int $limitLen 被輸入的最大字符個數 , 默認不限制;

* @return string 被過濾后的字符串

* @note 默認執行的是string類型的過濾

*/

public static function act($str,$type = 'string',$limitLen = false)

{

if(is_array($str))

{

$resultStr = array();

foreach($str as $key => $val)

{

$key = self::act($key, $type, $limitLen);

$val = self::act($val, $type, $limitLen);

$resultStr[$key] = $val;

}

return $resultStr;

}

else

{

switch($type)

{

case "int":

return intval($str);

break;

case "float":

return floatval($str);

break;

case "text":

return self::text($str,$limitLen);

break;

case "bool":

return (bool)$str;

break;

case "url":

return self::clearUrl($str);

break;

case "filename":

return self::fileName($str);

break;

// 嚴格過濾字符串

case "strict":

return self::strict($str);

// 檢測郵箱地址

case "email":

return self::email();

// 檢測http網址

case "http":

return self::http();

default:

return self::string($str,$limitLen);

break;

}

}

}

/**

* @brief 對字符串進行嚴格的過濾處理

* @param string $str 被過濾的字符串

* @param int $limitLen 被輸入的最大長度

* @return string 被過濾后的字符串

* @note 過濾所有html標簽和php標簽以及部分特殊符號

*/

public static function string($str,$limitLen = false)

{

$str = trim($str);

$str = self::limitLen($str,$limitLen);

$str = htmlspecialchars($str,ENT_NOQUOTES);

return self::addSlash($str);

}

/**

* @brief 對字符串進行普通的過濾處理

* @param string $str 被過濾的字符串

* @param int $limitLen 限定字符串的字節數

* @return string 被過濾后的字符串

* @note 僅對于部分如:

public static function text($str,$limitLen = false)

{

$str = self::limitLen($str,$limitLen);

$str = trim($str);

require_once(dirname(__FILE__)."/htmlpurifier/HTMLPurifier.standalone.php");

$cache_dir=IWeb::$app->getRuntimePath()."htmlpurifier/";

if(!file_exists($cache_dir))

{

IFile::mkdir($cache_dir);

}

$config = HTMLPurifier_Config::createDefault();

//配置 允許flash

$config->set('HTML.SafeEmbed',true);

$config->set('HTML.SafeObject',true);

$config->set('Output.FlashCompat',true);

//配置 緩存目錄

$config->set('Cache.SerializerPath',$cache_dir); //設置cache目錄

//允許的target屬性

$def = $config->getHTMLDefinition(true);

$def->addAttribute('a', 'target', 'Enum#_blank,_self,_target,_top');

//過略掉所有

$purifier = new HTMLPurifier($config);

return self::addSlash($purifier->purify($str));

}

/**

* @brief 增加轉義斜線

* @param string $str 要轉義的字符串

* @return string 轉義后的字符串

*/

public static function addSlash($str)

{

if(is_array($str))

{

$resultStr = array();

foreach($str as $key => $val)

{

$resultStr[$key] = self::addSlash($val);

}

return $resultStr;

}

else

{

return addslashes($str);

}

}

/**

* @brief 去掉轉義斜線

* @param string $str 要轉義的字符串

* @return string 去掉轉義的字符串

*/

public static function stripSlash($str)

{

if(is_array($str))

{

$resultStr = array();

foreach($str as $key => $val)

{

$resultStr[$key] = self::stripSlash($val);

}

return $resultStr;

}

else

{

return stripslashes($str);

}

}

/**

* @brief 檢測文件是否有可執行的代碼

* @param string $file 要檢查的文件路徑

* @return boolean 檢測結果

*/

public static function checkHex($file)

{

$resource = fopen($file, 'rb');

$fileSize = filesize($file);

fseek($resource, 0);

// 讀取文件的頭部和尾部

if ($fileSize > 512)

{

$hexCode = bin2hex(fread($resource, 512));

fseek($resource, $fileSize - 512);

$hexCode .= bin2hex(fread($resource, 512));

}

// 讀取文件的全部內容

else

{

$hexCode = bin2hex(fread($resource, $fileSize));

}

fclose($resource);

/* 匹配16進制中的 <% ( ) %> */

/* 匹配16進制中的 <? ( ) ?> */

/* 匹配16進制中的

if (preg_match("/(3c25.*?28.*?29.*?253e)|(3c3f.*?28.*?29.*?3f3e)|(3C534352495054.*?2F5343524950543E)|(3C736372697074.*?2F7363726970743E)/is", $hexCode))

{

return false;

}

else

{

return true;

}

}

/**

* 清理URL地址欄中的危險字符,防止XSS注入攻擊

* @param string $url

* @return string

*/

public static function clearUrl($url)

{

$string = filter_var($url, FILTER_VALIDATE_URL);

// if(preg_match('/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?\/?/i', $url)){

// echo $string;

// exit;

// }

return $string;

//return str_replace(array('\'','"','',"\\","<",">"),'',$url);

}

/**

* @brief 嚴格過濾字符串 ( 準許特殊字符 ._-)

* @param string $string 參數字符串

* @return string

*/

public static function strict($string)

{

// |^[\w\.\s<>=\!\x{4e00}-\x{9fa5}]+$|u

if(preg_match('#^[\w\.\s\-\x{4e00}-\x{9fa5}]+$#u', $string) == true)

{

return $string;

}

return false;

}

/**

* @brief 檢測郵箱地址是否合法( 正則加 DNS驗證 )

* @param $string

* @return string

*/

public static function email($string)

{

$string = filter_var($string, FILTER_VALIDATE_EMAIL);

$preg_email = '/^([a-z0-9_]|-|.)+@(([a-z0-9_]|-)+.){1,2}[a-z]{2,4}$/i';

if(!empty($string) && preg_match($preg_email, $string) == true){

$checkString = array_pop(explode("@", $string));

if(true == checkdnsrr($checkString, 'MX')){

return $string;

}

}

return false;

}

}

// $strictString = Filter::strict('asdfasdfasdf哈ss..哈身A-bsc12345_份卡薩打飛機');

// $email = Filter::email('asdfsadfdasdssssfdfdeerew#126.com');

$url = Filter::clearUrl('://jzsfdasfsadf');

var_dump($url);

exit;

總結

以上是生活随笔為你收集整理的php 严格过滤,php 常用过滤类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。