PHP:如何检查字符串是不是数字,但可以包含空格?

时间:2017-04-20 05:07:33

标签: php string

目标是验证一个数字的数字,可能包含也可能不包含空格。

例如,'1800 123 456'和'1800123456'均可接受。

检查它是否不是数字很容易:

if(!is_numeric($phone_number)) {
  //display error message
}

但我对如何用空格传递感到困惑。

有人能够指出我正确的方向吗?

3 个答案:

答案 0 :(得分:3)

不用空格检查:

<?php
if(!is_numeric(str_replace(" ", "", $phone_number))) {
  //display error message
}

或者,如果你想要正则表达式的开销:

<?php
if (preg_match("/[^0-9 ]/", $phone_number)) {
    //display error message
}

答案 1 :(得分:0)

Try this code snippet here

正则表达式: ^[\d]{4}\s+[\d]{3}\s+[\d]{3}|[\d]{10}$

  

[\d]{4}\s+[\d]{3}\s+[\d]{3} 示例:格式1800 123 456

     

[\d]{10} 示例:格式1800123456

<?php
ini_set('display_errors', 1);
$phone_number='1800 123 456';
if(preg_match("/^[\d]{4}\s+[\d]{3}\s+[\d]{3}|[\d]{10}$/",$phone_number)) 
{
     echo "matched";
}
else
{
     echo "not matched";
}

答案 2 :(得分:0)

您可以使用以下检查:

//eliminate every char except 0-9
$justNums = preg_replace("/[^0-9]/", '', $string);

//eliminate leading 1 if its there
if (strlen($justNums) == 11) $justNums = preg_replace("/^1/", '',$justNums);

//if we have 10 digits left, it's probably valid.
if (strlen($justNums) == 10) $isPhoneNum = true;