我想检查用户是否将他们的电话号码放入字符串中。
只需要连续检查6个数字(数字)。
在PHP中执行此操作的最佳方法是什么?
例子:" blah blah553376和blah"
三江源
答案 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)
有几种方法可以解决这个问题:
正如其他人所指出的那样,正则表达式解决方案。我绝不是一名正则表达式专家,但这似乎有效:
$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");
}
详尽的迭代方法:
$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");
}
我确信还有其他更好的方法,但上面只是两个简单的方法来解决这个问题。