在一个表单里POST过来几个手机号码。在接收页里用正则对号码进行检查是否有效。奇怪的是,竟然只对最后一个有效果。反之,改用GET则没问题,百思不得其解,期待高人指点。表单来的号码是换行方式的,如:
13926588888
13316888868
13926888888
13510688888
13802288888$mobile = explode("\n",$_POST['mobile']);
foreach ($mobile as $mobile_only){
if(preg_match("/^1(3|5|8)\d{9}$/",$mobile_only)) {
//处理...
}
}

解决方案 »

  1.   

    也就是说,按上面的示例手机号$_POST过来后它只能处理到最后一个号码即13802288888,但用$_GET或直接写数组就没这个问题,真是奇怪了。
      

  2.   

    用ereg这个函数吧  $mobile_only 因该是一个手机号码 而不是一组手机号码吧
      

  3.   


    是一个号码。
    如果preg_match是行不通也就算了,可偏偏是在非POST下是可以的。
      

  4.   

     你打印一下 
     echo "$_POST['mobile']";
     echo "$_GET['mobile']";
     看看。你一定要用preg_match 这个函数吗?
      

  5.   


    要能解决就行了,可ereg同样不可。
      

  6.   

    $mobile = explode("\n",$_POST['mobile']);
    用 print_r 将$mobile打印出来,看看结果
      

  7.   

    你用get方式的话可以在网址里看到号码之间有“%0D%0A”,可见只用“\n”去分割是不完全的。