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 GulsherVohra...。

私もこの問題に直面しています。私は自分自身を結論付けてそれを作りました。指示に従ってください。、opencartはMVC構造プラットフォームであるため、コントローラー、モデル、およびビューについて知る必要があります。ここで、コントローラーは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 に答える