2015-11-18 21 views
-3

我想验证用户输入的商品编号。如果加号符号放在第一个位置,那么is_numeric函数不会给出错误,但将+符号放在其他任何位置时会给出错误。is_numeric函数不验证加号(+)

案例1:

$ItemNumber = '+123456789'; 

if(!is_numeric($ItemNumber)) 
{ 
    echo 'Sorry! Invalid Item No. given.'; 
} 
else 
{ 
    echo 'Success'; 
} 

//Output : Success 

案例2:

$ItemNumber = '123456789+'; 

if(!is_numeric($ItemNumber)) 
{ 
    echo 'Sorry! Invalid Item No. given.'; 
} 
else 
{ 
    echo 'Success'; 
} 


//Output : Sorry! Invalid Item No. given. 
+0

按预期工作。我不认为物品编号会有反正号的。 – Andrew

+0

简单的修复方法是去掉字符串末尾的加号。 ''''$ ItemNumber = rtrim($ ItemNumber,'+');'''' – jaggedsoft

+0

@NextLocal但是这样就会破坏验证的目的.... – Andrew

回答

2

'+123456789'是有效的数值string.Check手动is_numeric,但'123456789+'不是

0

使用ctype_digit PHP功能得到一个有效的数字

$ItemNumber = '+123456789'; 
echo ctype_digit($ItemNumber);//false 

$ItemNumber = '123456789+'; 
echo ctype_digit($ItemNumber);//false 

$ItemNumber = '123456789'; 
echo ctype_digit($ItemNumber);//true 
0

试试这个..

<?php 
    $value = "+12345655539997"; 
    (or) 
    $value = "+12345655539997+"; 
    (or) 
    $value = "12345655539997+"; 

if(!preg_match('/^[0-9+]+$/', $value)) { 
echo 'Please enter a valid number'; 
}else{ 
echo "valid"; 
} 

演示:https://eval.in/470901

0
$ItemNumber = '+123456789'; 
if(is_numeric($ItemNumber)){ 
    echo 'Numeric string value.'; 
}else{ 
    echo 'fail'; 
} 

,让Numeric string value因为+123456789有效的数字字符串,但123456789+不是。 和is_numeric返回TRUE如果var是数字或数字字符串,否则返回FALSE