国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php用正則判斷是否為數字的方法

2024-05-04 23:44:26
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php用正則判斷是否為數字的方法,需要的朋友可以參考下
 

前兩天朋友的一個網站上有人利用php注入提交flash游戲分數,后來找原因才發現是有一位參數沒有做數字判斷導致。

本來保存游戲分數是 game.php?ac=save&fgid=1這個形式來實現,在php網頁里面fgid直接調用,沒有做任何的過濾。很多人利用在fgid=1后面加一個字母(fgid=1a),來實現一些非法操作。

假如  gamlist table 里面有一個游戲  fgid為102
select gname from gamelist where fgid='102′;
select gname from gamelist where fgid='102a';
這樣都可以成功的找到游戲名字gname,這就給很多人提供了可乘之機

建議大家對關鍵的參數必須做過濾。如數字正則過濾

復制代碼代碼如下:

if(preg_match("/^/d*$/",$fgid))    echo('是數字');
else   echo('不是數字');

或者用函數
復制代碼代碼如下:

if(is_numeric($fgid)) echo('是數字');
else echo('不是數字');

 

網上用來判斷id是否為數字的方法

 

復制代碼代碼如下:

$cid = empty($cid)? 1 : intval(preg_replace("/[^-/d]+[^/d]/",'', $cid));

 

這兩種方法的區別是  is_numeric小數也會認為是數字,而前面正則會把小數點當作字符。

附一些常用的正則運算:

驗證數字:^[0-9]*$
驗證n位的數字:^/d{n}$
驗證至少n位數字:^/d{n,}$
驗證m-n位的數字:^/d{m,n}$
驗證零和非零開頭的數字:^(0|[1-9][0-9]*)$
驗證有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
驗證有1-3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
驗證非零的正整數:^/+?[1-9][0-9]*$
驗證非零的負整數:^/-[1-9][0-9]*$
驗證非負整數(正整數 + 0)  ^/d+$
驗證非正整數(負整數 + 0)  ^((-/d+)|(0+))$
驗證長度為3的字符:^.{3}$
驗證由26個英文字母組成的字符串:^[A-Za-z]+$
驗證由26個大寫英文字母組成的字符串:^[A-Z]+$
驗證由26個小寫英文字母組成的字符串:^[a-z]+$
驗證由數字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
驗證由數字、26個英文字母或者下劃線組成的字符串:^/w+$
驗證用戶密碼:^[a-zA-Z]/w{5,17}$ 正確格式為:以字母開頭,長度在6-18之間,只能包含字符、數字和下劃線。
驗證是否含有 ^%&‘,;=?$/” 等字符:[^%&‘,;=?$/x22]+
驗證漢字:^[/u4e00-/u9fa5],{0,}$
驗證Email地址:^/w+[-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$
驗證InternetURL:^http://([/w-]+/.)+[/w-]+(/[/w-./?%&=]*)?$ ;^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$
驗證電話號碼:^(/(/d{3,4}/)|/d{3,4}-)?/d{7,8}$:–正確格式為:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX。
驗證身份證號(15位或18位數字):^/d{15}|/d{}18$
驗證一年的12個月:^(0?[1-9]|1[0-2])$ 正確格式為:“01”-“09”和“1”“12”
驗證一個月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$    正確格式為:01、09和1、31。
整數:^-?/d+$
非負浮點數(正浮點數 + 0):^/d+(/./d+)?$
正浮點數   ^(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*))$
非正浮點數(負浮點數 + 0) ^((-/d+(/./d+)?)|(0+(/.0+)?))$
負浮點數  ^(-(([0-9]+/.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*/.[0-9]+)|([0-9]*[1-9][0-9]*)))$
浮點數  ^(-?/d+)(/./d+)?



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 镇沅| 东阿县| 凯里市| 南开区| 聊城市| 高青县| 公安县| 新蔡县| 新绛县| 东源县| 白河县| 呼和浩特市| 津市市| 南召县| 疏勒县| 六枝特区| 随州市| 盐亭县| 永丰县| 泗阳县| 舟曲县| 无棣县| 古蔺县| 固安县| 克山县| 津市市| 南漳县| 宝兴县| 珲春市| 墨竹工卡县| 涡阳县| 临漳县| 高清| 中山市| 贡山| 宜黄县| 阿合奇县| 泊头市| 南投市| 黎平县| 中西区|