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+)?

(0)

相关推荐

  • 利用PHP判断是否是连乘数字串的方法示例

    描述 有这样一道题,给出一个数字串A,需要判断A是否为连乘数字串,连乘数字串的定义就是一个数字串可以拆分成若干个数字,后面的数字(从第N个数字开始)为前面2个数字的乘积. 举例 (1) '122' --- 可以拆成[1|2|2] 结果: 1×2=2  (连乘数字串) (2) '1122242' --- 可以拆成[11|22|242] 结果:  11×22=242   (连乘数字串) (3) '1224832256' --- 可以拆成 [1|2|2|4|8|32|256] 结果: 1×2=2,2×

  • php 判断是否是中文/英文/数字示例代码

    复制代码 代码如下: $str='asb天水市12'; if (preg_match("/^[\x7f-\xff]+$/", $str)){ echo '全部是汉字'; }else { echo '不全是汉字'; } /** PHP自带的判断是否是中文, eregi('[^\x00-\x7F]', $str ) //中文 eregi('[0-9]', $str) //数字 eregi('[a-zA-Z]', $str)//英文 */ if (eregi('[^\x00-\x7F]',

  • PHP的几个常用数字判断函数代码

    复制代码 代码如下: <HTML> <HEAD> <TITLE>常用的数值判断函数</TITLE> </HEAD> <BODY> <? //判断数组 $colors = array("red", "blue", "green"); if(is_array($colors)) { print("colors is an array"."<

  • php中数字、字符与对象判断函数用法实例

    本文实例讲述了php中数字.字符与对象判断函数用法.分享给大家供大家参考.具体分析如下: 在php判断数字,字符,对象,数组等包括有参见 is_bool().is_int().is_integer().is_float().is_real().is_object() 和 is_array()这些函数了,不知道你知道多少呢. 1. 双精度数判断:is_double is_double -- is_float() 的别名 描述:此函数是 is_float() 的别名函数,代码如下: 复制代码 代码如

  • php判断输入是否是纯数字,英文,汉字的方法

    本文实例讲述了php判断输入是否是纯数字,英文,汉字的方法.分享给大家供大家参考.具体分析如下: 这里利用php的mb_strlen和strlen函数就可以轻松得知字符串的构成是全英文.英汉混合.还是纯汉字.简要说明如下: 1.如果strlen返回的字符长度和mb_strlen以当前编码计算的长度一 致,可以判断是纯英文字符串. 2.如果strlen返回的字符长度和mb_strlen以当前编码计算的长度不一致, 且strlen返回值同mb_strlen的返回值求余后得0可以判断为是全汉字的字符串

  • 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′; selec

  • java hasNextInt判断是否为数字的方法

    如下所示: import java.util.*; public class Main { public static void main(String args[]) { Scanner cn = new Scanner(System.in); System.out.print("请输入一个整数:"); int data; if (cn.hasNextInt()) { data = cn.nextInt(); System.out.println("输出:");

  • javascript 正则 判断是否是数字的脚本

    不错的一个用正则检测输入的字符是否为数字的代码,也是一种并不常见的写法 Untitled Document function $(obj){ return document.getElementById(obj); } function checkIsInteger(str) { //如果为空,则通过校验 if(str == "") return true; if(/^(\-?)(\d+)$/.test(str)) return true; else return false; } S

  • 结合JQ1.9通过js正则判断各种浏览器版本的方法

    如下所示:$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase());  $.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());  $.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());  $.browser.msie = /msie/.test(naviga

  • js中使用正则表达式查找字母和数字的方法

    废话不多说,先看下js中使用正则查找字母和数字的方法,具体代码如下所示: <!DOCTYPE HTML> <html > <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> window.onload=function(){ localStorage.fiveData="

  • JS判断字符串是否为整数的方法--简单的正则判断

    是否为整数 if(!/^\d+$/.test(str)) alert("不是整数"); } 1.正则表达式 "^\\d+$" //非负整数(正整数 + 0) "^[0-9]*[1-9][0-9]*$" //正整数 "^((-\\d+)|(0+))$" //非正整数(负整数 + 0) "^-[0-9]*[1-9][0-9]*$" //负整数 "^-?\\d+$" //整数 "^\

  • C#判断一个字符串是否是数字或者含有某个数字的方法

    第一种就是 最常见的 用Try..Catch.. 再try中强转你要确认的string 类型 成功就是int  catch 就不是 string a = "avdfd"; try { int b = int.Parse(a); } catch (Exception) { Console.WriteLine("不是"); } 还有就是简单一点的 int.Tryparse() 比如 bool IsNumber = int.TryParse("你要判断的值&qu

  • 如何使用python提取字符串的中英文(正则判断)

    前言 提取中英文是我们在做数据处理时候经常使用的,最高效的做法就是通过正则判断了,下面是我写的笔记,希望对你有用 一. re中的sub函数 使用Python 的re模块,re模块提供了re.sub用于替换字符串中的匹配项. re.sub(pattern, repl, string, count=0) 参数说明: pattern:正则重的模式字符串 repl:被拿来替换的字符串 string:要被用于替换的原始字符串 count:模式匹配后替换的最大次数,省略则默认为0,表示替换所有的匹配 1.1

  • JavaScript判断是否为数字的几种方式汇总(推荐!)

    目录 前言 1. typeof.instanceof.Number.isInteger 2. parseInt.parseFloat 3. isNaN.isFinite 4. Number.isNaN.Number.isFinite 5. 正则表达式 6. 终极方案(推荐) 7. 结语 前言 js判断是否为数字的方式很多: typeof.instanceof.Number.isNumber parseInt.parseFloat isNaN.isFinite Number.isNaN.Numbe

  • IOS判断字符串是不是纯数字的方法总结

    前言 在大家开发项目的时候,遇到需求可能是让我们只输入一段纯数字,这时候我们就要对这个字符串进行筛选判断,不符合纯数字进行提示操作,以求达到最好的交互效果也能满足需求. 下面介绍几种判断字符串是否为纯数字的方法 第一种方式是使用NSScanner: 1. 整形判断 - (BOOL)isPureInt:(NSString *)string{ NSScanner* scan = [NSScanner scannerWithString:string]; int val; return [scan s

随机推荐