这是我的Codeigniter功能:
function edit_phone($phone)
{
if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $phone))
{
return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone);
}
else
{
$this->CI->validation->set_message('phone', "This must be a 10-digit USA phone number.");
return FALSE;
}
}
这会验证/检查输入,但不会在db中重新格式化。
验证很棒!但为什么这不会返回标准电话号码?!
答案 0 :(得分:3)
我认为问题在于它只能使用格式为1234567890的数字,但是基于preg_match()调用中的正则表达式,Kevin还希望能够容纳如下数字:
如果是这样,preg_replace()中的正则表达式必须类似于......
preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', "$1-$2-$3", $phone)
答案 1 :(得分:2)
您能否提供您尝试填写的示例数据?
我使用了以下代码:
$phone = "1234567890";
echo preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone);
得到了:
123-456-7890
这是绝对正确的,据我所知。