php - preg_match() 期望参数是给定的长字符串

标签 php regex preg-match

我正在检查信用卡字段以确保它们每个都包含四位数字。

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

我不知道我做错了什么,谢谢。有很多这样的问题,但没有一个能给我解决方案……而且我一直在用头撞墙,无疑忽略了显而易见的问题。

最佳答案

preg_match一次只检查一个主题。

试试下面的代码:

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>';

关于php - preg_match() 期望参数是给定的长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040039/

相关文章:

php - 当 haystack 是 exec() 输出时,preg_match 返回 null

php - 用于解析双括号中以竖线分隔的数据的正则表达式

php - 有没有更简洁的方法来设置默认值?

javascript - PHP 表中每一行的删除按钮

ruby-on-rails - 使用正则表达式查询 Rails 缓存以允许部分匹配并返回多个项目

javascript - 使用 RegExp 递归检索多个捕获组

php - 打开外部 URL 并继续使用我自己的网页

PHP 代码 - 这部分代码是什么意思?

regex - 我怎样才能使这个正则表达式起作用?

php - 比较两个名称字符串 php