PHP检查字符串中的多个数字

时间:2014-08-06 06:47:37

标签: php

我想检查用户是否将他们的电话号码放入字符串中。

只需要连续检查6个数字(数字)。

在PHP中执行此操作的最佳方法是什么?

例子:" blah blah553376和blah"

三江源

2 个答案:

答案 0 :(得分:2)

试试这个

$str = "blah blah553376and blah";
preg_match('!\d+!', $str, $matches);//You can use preg_match('!\d{6,}!', $str, $matches); also
if(isset($matches[0]) && is_numeric($matches[0]) && strlen(trim($matches[0])) >= 6){
  echo $matches[0];
}

答案 1 :(得分:0)

有几种方法可以解决这个问题:

  1. 正如其他人所指出的那样,正则表达式解决方案。我绝不是一名正则表达式专家,但这似乎有效:

    $input_line="blah blah553376and blah";
    $regex_line="/([a-z 0-9]*)([0-9]{6})([a-z 0-9]*)/i";
    $output_array=Array();
    preg_match($regex_line, $input_line, $output_array);
    if($output_array[2])
    {
        echo("number is:  ". $output_array[2]);
    }
    else
    {
        echo("number not found");
    }
    
  2. 详尽的迭代方法:

    $input_line="blah blah553376and blah";
    
    $output_string="";
    for($i=0; $i<strlen($input_line);$i++)
    {
        $current_character = substr($input_line,$i,1);
        if(is_numeric ( $current_character ))
        {
            $output_string .= $current_character;
        }
        else
        {
            //reset output
            $output_string="";
        }
    
        if(strlen($output_string) >=6)
        {
            //bail out if requirements are met.
            break;
        }
    }
    if($output_string)
    {
        echo("number is:  " . $output_string);
    }
    else
    {
        echo("number not found");
    }
    
  3. 我确信还有其他更好的方法,但上面只是两个简单的方法来解决这个问题。