我想在输入字段中输入0到9的任何数字,所以我检查filter_var如下
<?php
$res['pno'] = filter_var($cond['pno'],FILTER_VALIDATE_REGEXP,
//check valid phone no
array('options'=>array('regexp'=>'/^0+[0-9]*$/')))?true:false;
?>
输入任何数字都可以,但只输入0,它会返回 false 所以如果我只输入0,如何检查它以返回 true ?
答案 0 :(得分:9)
答案 1 :(得分:4)
也许试试:
if ($res['pno']!==false){
// !== operator is important
// because it checks value AND type of constant
// string '0' is equal false if You checks only value
}
答案 2 :(得分:1)
试试这个:检查条件!==false
如下:
$cond['pno']="0";
$res['pno'] = filter_var($cond['pno'],FILTER_VALIDATE_REGEXP,
array('options'=>array('regexp'=>'/^0+[0-9]*$/')))!==false?true:false;
var_dump($res['pno']);
$cond['pno']="01";
$res['pno'] = filter_var($cond['pno'],FILTER_VALIDATE_REGEXP,
array('options'=>array('regexp'=>'/^0+[0-9]*$/')))!==false?true:false;
var_dump($res['pno']);
$cond['pno']="a";
$res['pno'] = filter_var($cond['pno'],FILTER_VALIDATE_REGEXP,
array('options'=>array('regexp'=>'/^0+[0-9]*$/')))!==false?true:false;
var_dump($res['pno']);
<强>输出强>
boolean true
boolean true
boolean false
答案 3 :(得分:1)
因为PHP是一种松散类型的语言(比较不是基于类型,而是仅基于变量的值),返回字符串"0"
的条件被评估为empty因此,执行其他声明。要检查值是否为空而不是数字,请使用empty( $num ) && !is_numeric( $num )
,例如:
$res['pno'] = filter_var( $cond['pno'], FILTER_VALIDATE_REGEXP, array( 'options' => array( 'regexp'=>'/^0+[0-9]*$/' ) ) );
$res['pno'] = !( empty( $res['pno'] ) && !is_numeric( $res['pno'] ) );