3

我想在 opencart 代码示例中添加 php 电话号码验证,如下所示

    if(!filter_var($customer_email, FILTER_VALIDATE_EMAIL)) {
            $errors[$pos++] = 'Email is not valid.';
        }

        if($customer_mobile=='') {
            $errors[$pos++] = 'Please enter your Mobile.';
        } /*elseif (strlen($customer_mobile) < 11 || !is_numeric($this->request->post['cell_number'])){
            $errors[$pos++] = 'Mobile number should be 7 digits.';
        }*/
4

3 回答 3

8

@Tayyab Gulsher Vohra....

我也面临这个问题。我总结自己并做到了。按照说明,opencart是一个MVC结构平台,所以需要了解Controller、Model和view,这里Controller是index()函数中的第一个初始化电话号码

if (isset($this->request->post['telephone'])) {
            $this->data['telephone'] = $this->request->post['telephone'];
        } else {
            $this->data['telephone'] = $this->customer->getTelephone();
        }

此外,使用此方法的电话号码必须有效。

 function validate()
        if( !preg_match("/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i", $this->request->post['telephone']) ) {
                    $this->error['telephone'] = $this->language->get('error_telephone');
                }

那么你应该在语言文件中初始化电话号码值。

于 2013-03-29T08:29:31.047 回答
2

好吧,您有 2 个选项,验证或过滤。因为电话号码的长度和字符不同,我建议你只是过滤

FILTER_SANITIZE_NUMBER_INT

删除除数字、加号和减号之外的所有字符。

更多信息: 过滤器

示例

<?php echo filter_var("Home: +1 (123) 456-7890 @ John", FILTER_SANITIZE_NUMBER_INT); ?>
于 2012-11-03T09:22:02.437 回答
1

消毒器功能还没有真正准备好验证电话号码,我可能会使用正则表达式留下 () + - : e 和数字,因为这允许大多数国际号码和扩展名的变化。

于 2012-11-18T00:19:12.597 回答