前两天朋友的一个网站上有人利用php注入提交flash游戏分数,后来找原因才发现是有一位参数没有做数字判断导致。
本来保存游戏分数是 game.php"htmlcode">
<"123"; if(preg_match("/^\d*$/",$fgid)) echo('是数字'); else echo('不是数字');
或者用函数
if(is_numeric($fgid)) echo('是数字');
else echo('不是数字');
网上用来判断id是否为数字的方法
$cid = empty($cid)"/[^-\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})"htmlcode">
<"htmlcode"><"0"; $strTest=is_numeric(0); var_dump($strTest); "htmlcode">function int_str($str){ if(is_numeric($str)){ $str = 'm'.$str; } return $str; }我们用intval来判断用户输入的信息是否为数字,这个可以自动转换成数字,如果是0,返回的值也是假的,在php判断用户输入的是否为数字型或是否为数字型字符串,我们会用到is_numeric与intval函数来处理.实例代码如下:
$num = 1; $num1 ='1'; $str ='abc'; if( is_numeric( $num ) ) { echo $num.'是数字型'; } //1是数字型 if( is_numeric( $num1) ) { echo $num1.'是数字型'; } else { echo $num1.'不是数字型'; }//1是数字型
第二个实例为看还是数字型呢,这要看php是那类型的语言了,关键是php是弱语言型,所以就会自动把数字型字符转换成数字了,实例代码如下:
if( intval( $str ) ) { echo $str.'是数字'; } else { echo $str.'不是数字'; } //acd不是数字 if( intval( $num1 ) ) { echo $num1.'是数字'; } else { echo $num1.'不是数字'; } //1是数字这篇文章就介绍到这了,需要的朋友可以参考一下。
正则,数字
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。