is_numeric函数未验证加号(+)符号

时间:2015-11-18 06:49:26

标签: php regex preg-match

我正在尝试从用户输入验证商品编号。如果加号符号放在第一位,那么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.

4 个答案:

答案 0 :(得分:2)

if ( callback ) callback();是有效的数字字符串。请查看手册is_numeric,但'+123456789'不是

答案 1 :(得分: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

答案 2 :(得分: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

答案 3 :(得分:0)

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

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