0

私のサイトでは、ユーザーは電話番号を入力して認証を受け、SMS で登録する必要があります。以下の関数では、ユーザーはエラーを受け取ります:

  1. 電話番号が空の場合
  2. 電話番号が存在する場合(登録済み)
  3. 電話番号が10桁未満の場合

国コードの前に00または+を入力した場合、自動削除/無視したいと思います。(したがって、004798765432 または +4798765432 を入力すると、正しい値は 4798765432 になります)。

また、入力した電話番号が単一の 0 で始まる場合は、別のエラーを表示したいと思います (したがって、02298765432 を入力すると、次のようなエラー メッセージが表示されます: 入力した電話番号は国際電話番号ではありません)。

私が使用しているコードは次のとおりです。

function registration_errors( $errors ) {
    $enabled = csnetworks_sms_get_option( 'register_form' );

    if ( $enabled == 'on' ) {
        $phone = $_POST['user_phone'];

        if ( $phone == '' ) {
            $errors->add( 'empty_phone', __( '<strong>ERROR</strong>: Please type your phone number.', 'csnetworks' ) );
        } else if ( phone_exists( $phone ) ) {
            $errors->add( 'phone_exists', __( '<strong>ERROR</strong>: Phone number is already registered.', 'csnetworks' ) );
        } else {
            if ( preg_match( '/[^\d]/', $phone ) || (strlen( $phone ) < 10 ) ) {
                $errors->add( 'invalid_phone', __( '<strong>ERROR</strong>: Please type a valid phone number (10 digit min.)', 'csnetworks' ) );
            }
        }
    }
    return $errors;
}

/** 最後に、この解決策がうまくいきました */

/**
 * Validates phone number
 *
 * @param type $errors
 * @return type
 */

function registration_errors( $errors ) {
    $enabled = csnetworks_sms_get_option( 'register_form' );

    if ( $enabled == 'on' ) {
        $phone = $_POST['user_phone'];

if ($phone[1] == '0') $phone = substr($phone, 2);

if ($phone[0] == '0') { $errors->add( 'invalid_inter_phone', __( 'エラー: 入力した電話番号は国際電話番号ではありません.', 'csnetworks' ) ); } if ( $phone == '' ) { $errors->add( 'empty_phone', __( 'エラー: 電話番号を入力してください。', 'csnetworks' ) ); } else if ( phone_exists( $phone ) ) { $errors->add( 'phone_exists', __( 'エラー: 電話番号は既に登録されています.', 'csnetworks' ) ); } else { if ( preg_match( '/[^\d]/', $phone ) || (strlen( $phone ) < 10 ) ) { $errors->add( 'invalid_phone', __( 'エラー:
(最小 10 桁。"+" は使用しないでください)', 'csnetworks' ) ); }

        }
    }

    return $errors;
}
4

2 に答える 2

0

使用subtr():

if (substr($phone, 0, 2) == '00') {
    $phone =  substr($phone, 2);
}
elseif (substr($phone, 0, 1) == '+') {
    $phone = substr($phone, 1);
}
elseif (substr($phone, 0, 1) == '0') {
    echo "Phone number you entered is not a international phone number";
}

ライブデモ!

于 2013-08-26T18:56:11.937 に答える
0

電話番号に + があるので、それはすでに文字列値であることを意味します。文字列は単なる文字の配列であるため、そのままアクセスできます。エコーはデモンストレーションのためだけにあります。

$phone = '0479876543';

if($phone[0] == '+')
    $phone = substr($phone, 1);
elseif($phone[0] == '0')
{
    if($phone[1] == '0')
        $phone = substr($phone, 2);     
    else{
        echo 'Phone number you entered is not a international phone number.';
    }
}


echo $phone;
于 2013-08-26T19:09:05.253 に答える