nav_xian
返回返回 教育头条

PHP对接受数据判断过滤小技巧

学习经验

2021年03月27日 09:26:52
由于PHP是弱类型语言,需要经常对输入数据类型进行判断,在对输入数据类型判断的过程中,有各种各样的方式去判断,获取适合自己的数据,在其中,我总结了一些数据判断的技巧以及在其中可能会遇到的坑。
1. 整形判断。在对post/get/request过来的数据呢,我一般会使用intval(),在某些场合下,需要将负数转换成正数,那么我会使用abs()来进行操作。具体代码是:
```php
if (($id=intval($this->getPost('id'))) > 0){ }
// 或者
if (($id=abs(intval($this->getPost('id))))){}
```
对于post/get/request数据,我是不会使用is_int这种去判断的,因为即使post过来1,他也是string数据类型,而不是int数据类型。当然,还有其他方法,比如is_numeric(),比如ctype_digit,其中,is_numeric()支持浮点型数据。
2. 字符串判断。对于字符串判断,大家一般会使用htmlspecialchars()进行数据过滤,可是,如果加一些条件,比如英文字符,比如英文加数字字符,如何去判断呢,有些人想当然的就会想到正则。在PHP中除了正则,还有ctype是非常有效的办法,比如节点的英文名称,我们可以使用ctype_alpha;课程呢,是Lession1,那么可以使用ctype_alnum进行检测。

3. 布尔类型。很简单了,is ($id){ true} else {false};在这一块呢,有个小小的坑,有些人可能有注意到,有些人没注意到。有些人喜欢使用strpos()判断是否存在,
```php
if (strpos("abc",'a')){
echo 'ok';
}else {
echo 'no';
}
```
这种是错误的。我记得tp上传文件代码中就使用strpos判断路径,其实,这种是不可取的,应该加false,当然,更好的办法是不使用strpos,使用其他字符串处理函数。
4. 值的判断:好,接下来就是一般isset(),empty()函数判断是否有值了。这个就是一些规范了啦,因为是与场景有关系的。在平时写代码时候,如果变量未定义,有的时候会报错,有的时候不会报错,原因不知,哈哈,而且,这个是与PHP版本是没有关系的,即使是PHP5.6.11,也会报这个错误。当然,error_reporting的所有问题,都是需要解决的。举个例子,如果变量未定义,在yaf框架中,在*.php文件中处理的时候,如果isset($id),那么是没有问题的,可能不会报错,但是,但是,但是,重要的事情说三遍,如果在php没有定义,你在模板中使用了,那你就悲剧了,你会发现,报变量未定义错误,即使你使用isset也不行。这就是其中的一个小坑。所以,为了error_log 干干净净,预先定义变量是一个写好代码的好习惯。

好了,以上就是PHP对接受数据判断过滤小技巧的介绍,如对本文有疑问或者想了解更多php培训信息,请与我们联系,我的微信18560125702。教育宝是一家教培行业第三方平台,5年以上工作经验的学习顾问能给你最客观公正的建议,帮你辨别课程好坏,为你提供学习帮助。返回教育宝头条

【免责声明】本文仅代表作者本人观点,与教育宝无关。教育宝对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何保证。请读者仅作参考,特此声明!

相关推荐

400-029-0997