Вот классное регулярное выражение, которое я узнал в Интернете. Он проверяет число практически в любом американском формате и преобразует его в (xxx) xxx-xxxx. Я думаю, что это здорово, потому что тогда люди могут ввести любой 10-значный номер телефона США, используя любой формат, к которому они привыкли, и вы получите из него правильно отформатированный номер.
Вот вся функция, которую вы можете добавить в свой класс MY_form_validation. Я хотел, чтобы в моей форме были разрешены пустые поля, поэтому вам придется изменить его, если вы хотите принудительно установить значение.
function valid_phone_number_or_empty($value)
{
$value = trim($value);
if ($value == '') {
return TRUE;
}
else
{
if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $value))
{
return preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', '($1) $2-$3', $value);
}
else
{
return FALSE;
}
}
}