ホームページ  >  記事  >  バックエンド開発  >  PHP 正規表現を使用して、入力文字列が正しい銀行カード番号形式であるかどうかを確認する方法

PHP 正規表現を使用して、入力文字列が正しい銀行カード番号形式であるかどうかを確認する方法

PHPz
PHPzオリジナル
2023-06-24 10:02:511410ブラウズ

現代経済の急速な発展に伴い、金融取引はますます頻繁になっています。一般的な支払い方法として、銀行カードは安全性と正確性を確保する必要があります。したがって、銀行カード取引を行う際には、銀行カード番号が正しいことを確認することが非常に重要です。この記事では、PHP 正規表現を使用して、入力文字列が正しい銀行カード番号形式であるかどうかを確認する方法を紹介します。

銀行カード番号は通常、Luhn アルゴリズムを使用して検証されます。つまり、カード番号の各桁が 1 つずつ重み付けされ、結果が加算され、最後に係数が計算されます。結果が 0 の場合は、銀行カード番号の形式が正しいことを意味します。具体的な操作は次のとおりです:

1. カード番号の最後の桁を最初として右から左に数え、次に左に進み、2 を乗算した数値が次の場合は、各数値を 2 倍します。 10 以上の場合は、それを 2 つの数値に分割し、その 2 つの数値を加算します。

2. すべての数値を加算し、2 を掛けます。

3. 右から左に数えて、カード番号の最後の桁が最初で、左に行くにつれて、各数字に 1 を掛けるか掛けず、その結果を加算します。

4. 手順 2 と 3 の結果を加算します。結果が 10 で割り切れる場合、銀行カード番号の形式は正しいです。

上記の検証プロセスは、PHP 正規表現を使用して簡単に実現できます。具体的な実装手順は次のとおりです。

ステップ 1: 銀行カード番号の書式設定
銀行カード番号には数字のみを含めることができるため、PHP の preg_replace 関数を使用して文字列内の数字以外の文字を数字に置き換える必要があります。スペース。

$bank_card_number = preg_replace('/D/','',$bank_card_number);

ステップ 2: 文字列の長さを確認する
銀行カード番号の長さは、通常 16 桁または 19 桁です。したがって、PHP の strlen 関数を使用して、文字列の長さが 16 か 19 かを確認する必要があります。

if(strlen($bank_card_number) !== 16 && strlen($bank_card_number) !== 19){

// 长度不正确

}

ステップ 3: Luhn アルゴリズム検証を実装する
PHP の preg_match 関数を正規表現と組み合わせて使用​​し、Luhn アルゴリズム検証を実装します。

$len = strlen($bank_card_number);
$sum = 0;
for($i = 0; $i

$value = intval($bank_card_number[$len - $i - 1]);
$sum += (($i % 2) !== 0) ? (($value * 2) >= 10 ? ($value * 2 - 9) : ($value * 2)) : $value;

}
if(($sum % 10) !== 0){

// 格式不正确

}

次に、上記のコードを関数に統合して、銀行カード番号の形式を確認します。関数。

function verify_bank_card_number($bank_card_number) {

$bank_card_number = preg_replace('/D/','',$bank_card_number);
if(strlen($bank_card_number) !== 16 && strlen($bank_card_number) !== 19){
    return false;
}
$len = strlen($bank_card_number);
$sum = 0;
for($i = 0; $i < $len; $i++){
    $value = intval($bank_card_number[$len - $i - 1]);
    $sum += (($i % 2) !== 0) ? (($value * 2) >= 10 ? ($value * 2 - 9) : ($value * 2)) : $value;
}
if(($sum % 10) !== 0){
    return false;
}
return true;

}

この関数を呼び出して銀行カード番号文字列を渡し、銀行カード番号の形式が正しいかどうかを判断します。

$bank_card_number = '6228480402564890018';
if(verify_bank_card_number($bank_card_number)){

echo '银行卡号格式正确';

} else {

echo '银行卡号格式不正确';

}

合格上記の手順により、PHP 正規表現の preg_match 関数を使用して、ユーザーが入力した銀行カード番号が正しいかどうかを迅速に検証できます。これにより、銀行カード番号の誤入力による取引失敗などの問題を効果的に回避できます。

以上がPHP 正規表現を使用して、入力文字列が正しい銀行カード番号形式であるかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。