Php 数字0的Regexp类型
我希望输入字段中的任何数字都为0到9,所以我检查filter_var,如下所示Php 数字0的Regexp类型,php,regex,Php,Regex,我希望输入字段中的任何数字都为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,它返回fal
<?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?regexp本身已经很好了 你的实际问题是:
?true:false
当使用正则表达式成功时,它将返回一个字符串,该字符串仅为“0”
- 现在,如果
在布尔上下文中计算,那么最终表达式将是?:
false
- 因此,请使用或将筛选器_var()结果检查包装起来
(是的,
是高度冗余的。)?true:false
- 也许可以尝试:
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
}
试试这个:用
检查条件==错误
如下所示:
$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
由于PHP是一种松散类型的语言(默认情况下,不会对变量的类型进行比较,而只对变量的值进行比较),因此返回字符串
“0”
的条件将作为进行计算,从而执行else语句。要检查值是否为空且不是数字,请使用empty($num)&&!是数字($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'] ) );
有效电话号码的条件是什么?请尝试使用
/^[0-9]*$/
。或者它必须以0
开头?在仅“0”的情况下,它后面是行末吗?因为如果不是,你就错了我已经试过了bro@Stribizev,还是错了请提供可重复的例子,而不仅仅是只有你知道的$cond[“pdo”]
。另外,如果是电话号码,您不需要最严格的regexp。人们通常希望输入类似于+1-123-49429
的内容。
$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'] ) );