我在考虑加入一些验证/过滤到我的Zend框架应用程序的电话号码字段。不知道这是我应该做或没有。

我想这可能是有帮助的用户有这样的特征,所以我可以执行特定的显示格式。我不知道如果电话号码的格式应存储在数据库中,或者当它从数据库中检索。我不想太严格有关这一点,因为它不是真的那么重要。我只是想避免一半的人进入123.456.7890他们的电话号码的格式,另一半进入(123) 456-7890为另一种格式。我要电话号码列表看起来是一致的。所以,也许我应该使用一些JavaScript来帮助用户输入自己的号码?也许有一个已经做一个jQuery插件,我可以用我的Zend的形式,它整合?

你怎么认为呢?

有帮助吗?

解决方案

我最喜欢的建议:

JQuery的屏蔽后的输入插件

“屏幕截图”

其他提示

您仍然要强制在后端验证的JavaScript验证可以很容易地绕过。这是我的验证插件这迫使1.1234567890:

class App_Validate_Phone extends Zend_Validate_Abstract
{
    const NOT_VALID = 'phoneInvalid';

    protected $_messageTemplates = array(
        self::NOT_VALID => "Phone number '%value%' must be in the format +COUNTRYCODE.PHONENUMBER. Example: +1.4071234567"
    );

    public function isValid($value)
    {
        $this->_setValue($value);

        if (!preg_match('/^\+([0-9]+)\.([0-9]+)$/',$value)) {
            $this->_error(self::NOT_VALID);
            return false;
        }

        return true;
    }
}

如果你谷歌的电话验证的正则表达式你可以找到任何数量的验证的正则表达式,你可以在替换的的preg_match()的为您的特定需求。

您不需要创建一个自定义验证到手机。 Zend公司有使用定位手机验证器的建议。虽然还没有准备好,你可以使用正则表达式验证:

//Add element for phoneNumber1
$this->addElement('text', 'phoneNumber1', array(
    'label'     =>  'Primary Phone Number',
    'required'  =>  false,
));
$phone1 = $this->getElement('phoneNumber1');
$phone1->addValidator('regex', false, array('pattern' => '^[2-9][0-9]{2}-[0-9]{3}-[0-9{4}$', 'messages' => 'Enter a valid Phone Number'));
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top