3

クレジット カード フィールドをチェックして、それぞれに 4 桁の数字が含まれていることを確認しています。

function creditcard ($creditCard1,$creditCard2,$creditCard3,$creditCard4)
{
    $regexp="/^[0-9]{4}$/";

    if (preg_match($regexp,$creditCard1,$creditCard2,$creditCard3,$creditCard4))//line 18
    {
        return TRUE;
    }
    else
    {
        echo'<script type="text/javascript">alert("Enter a valid credit card number.")</script>';
        return FALSE;
    }
}

    $creditCard1=$_POST['creditCard1'];
    $creditCard2=$_POST['creditCard2'];
    $creditCard3=$_POST['creditCard3'];
    $creditCard4=$_POST['creditCard4'];
    $creditcard=creditcard($creditCard1,$creditCard2,$creditCard3,$creditCard4);

このエラーが発生しています。

Warning: preg_match() expects parameter 4 to be long, string given in C:\xampp\htdocs\SFASC2\aa.php on line 18

何が間違っているのかわかりません、ありがとう。このような質問はたくさんありますが、解決策を教えてくれるものはありません..そして、私は頭を壁にぶつけており、間違いなく明らかなことを見落としています.

4

2 に答える 2

5

preg_matchは、一度に 1 つの対象のみをチェックします。

次のコードを試してください:

function creditcard($nums)
{
    $regexp="/^[0-9]{4}$/";

    for ($i = 0; $i < 4; $i++)
        if (! preg_match($regexp, $nums[$i]))
            return FALSE;
    return TRUE;
}

$creditCard1 = $_POST['creditCard1'];
$creditCard2 = $_POST['creditCard2'];
$creditCard3 = $_POST['creditCard3'];
$creditCard4 = $_POST['creditCard4'];

$ok = creditcard([$creditCard1, $creditCard2, $creditCard3, $creditCard4]);
if (! $ok)
    echo '<script type="text/javascript">alert("Enter a valid credit card number.")</script>';
于 2013-08-04T05:44:28.730 に答える