php filter(一)
PHP过滤器包含两种类型
Validation:用来验证验证项是否合法
Sanitization:用来格式化被验证的项目,因此它可能会修改验证项的值,将不合法的字符删除等。
input_filters_list()函数用来列出当前系统所支持的所有过滤器。
1 <table>2 <tr><td>Filter Name</td><td>Filter ID</td></tr>3 <?php4 foreach(filter_list() as $id =>$filter)5 {6 echo '<tr><td>'.$filter.'</td><td>'.filter_id($filter).'</td></tr>'."\n";7 }8 ?>9 </table>
以上代码会输出如下信息
Filter Name Filter ID
int 257
boolean 258
float 259
validate_regexp 272
validate_url 273
validate_email 274
validate_ip 275
string 513
stripped 513
encoded 514
special_chars 515
unsafe_raw 516
email 517
url 518
number_int 519
number_float 520
magic_quotes 521
callback 1024
每个过滤器都会拥有一个独自的ID。这里的每个过滤器都能够被filter_var()函数使用。下面将会逐个介绍其使用方法。注意 ,上面的string和strippedID相同,这是因为他们是同一个过滤器,或者说是同一个过滤器的两个别名罢了。
过滤数据
使用filter_var()方法对数据进行过滤,下面是一个简单的过滤例子
1 <?php2 3 /*** an integer to check ***/4 $int = 1234;5 /*** validate the integer ***/6 echo filter_var($int, FILTER_VALIDATE_INT);7 //12348 ?>
上面代码将会数据一个整数型的1234,因为$int变量通过的整数类型的验证,这次更换一下$int变量的内容
1 <?php2 3 /*** an integer to check ***/4 $int = 'abc1234';5 /*** validate the integer ***/6 echo filter_var($int, FILTER_VALIDATE_INT);7 8 ?>
此时在运行代码,发现没有任何变量输出,这是因为$in变量没有通过验证,因此这个方法返回bool(false)。同时也需要注意 一下,即使$int='',也会返回bool(false)
整数验证
上面的几段代码简单的验证了一个给定值是否为整数的例子。其实FILTER_VALIDATE_INT也提供了数值范围的验证,下面我们 来验证一个变量,判断它是否为整数型,并验证它的值是否在50到100之间
1 <?php 2 /*** an integer to check ***/ 3 $int = 42; 4 /*** lower limit of the int ***/ 5 $min = 50; 6 /*** upper limit of the int ***/ 7 $max = 100; 8 9 /*** validate the integer ***/10 echo filter_var($int, FILTER_VALIDATE_INT, array("min_range"=>$min, "max_range"=>$max));11 //4212 ?>
运行上面的代码,发现42被输出来了,并没有发现任何错误,这是为什么啊?原来想要向验证中添加附加验证规则时候,需要传递一个含有'options'键的数组,向下面这样:
1 <?php 2 /*** an integer to check ***/ 3 $int = 42; 4 /*** lower limit of the int ***/ 5 $min = 50; 6 /*** upper limit of the int ***/ 7 $max = 100; 8 9 /*** validate the integer ***/10 echo filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range"=>$min, "max_range"=>$max)));11 12 ?>
运行上面的代码,页面不会有任何输出,因为上面返回了false,说明验证成功。使用该方法也可以对负数进行范围验证同时这种方式也支持单范围取值,即只是指定一个最大值或者最小值的范围,如
<?php/*** an integer to check ***/$int = 12;/*** lower limit of the int ***/$min = 10;/*** validate the integer ***/echo filter_var($int, FILTER_VALIDATE_INT,array('options'=>array('min_range'=>$min)));//12?>
上述代码会验证$int是否是大于(不包括等于)$min的整数类型的值,运行代码,输出12
上面的这些例子只是简单的对单个值进行验证,那么如果对一组变量进行验证呢?答案是使用filter_var_array()。该函数可以同时验证多个不同类型的数据。这里先做一个简单的例子
1 <?php 2 3 /*** an array of values to filter ***/ 4 $arr = array(10,"109","", "-1234", "some text", "asdf234asdfgs", array()); 5 6 /*** create an array of filtered values ***/ 7 $filtered_array = filter_var_array($arr, FILTER_VALIDATE_INT); 8 9 /*** print out the results ***/10 foreach($filtered_array as $key=>$value)11 {12 echo $key.' -- '.$value.'<br />';13 }14 ?>
运行上述代码,输出如下
0 -- 10
1 -- 109
2 --
3 -- -1234
4 --
5 --
6 -- Array
FILTER_VALIDATE_INT过滤器同时支持八进制和十六进制,这两种flags是
FILTER_FLAG_ALLOW_HEX
FILTER_FLAG_ALLOW_OCTAL
利用数组传递flags
1 <?php2 3 /*** a hex value to check ***/4 $hex = "0xff";5 6 /*** filter with HEX flag ***/7 echo filter_var($hex, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX));8 //2559 ?>
PHP技术交流群 170855791

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。
