与regex进行比较,并在php中获取差异计数


Comparison with regex and get count of diffrence in php

我有一个多维数组,希望与regex进行比较并获得差值计数。

阵列:

Array ( 
    [0] => Array ( 
        [SaleId] => 11^ 
    ) 
    [1] => Array ( 
        [SaleId] => 222@ 
    ) 
    [2] => Array ( 
        [SaleId] => 333% 
    ) 
    [3] => Array ( 
        [SaleId] => %%$ 
    ) 
) 

PHP代码:

$number = count(!preg_match("/[0-9][a-z][A-z][@.+-_]/",$SaleId));
echo $number;

解释正则表达式:

  1. 小写字母
  2. 大写字母
  3. 数字
  4. 特殊字符@+-_

但是CCD_ 1在任何情况下都返回1!帮助我plz

返回输出=1

我想返回3

preg_match()将为true或false。因此,如果找到匹配,则意味着按照下面给出的值进行计数。您正在传递整个数组。我们应该传递带有index的数组,因此使用for循环试试这个

<?php
$arr = array(
0 => array(
    'SaleId' => '11^' ),
1 => array(
    'SaleId' => '222@'),
2 => array(
    'SaleId' => '333%'),
3 => array(
    'SaleId' => '%%$' ),
 );
 //print_r($arr);exit();
 $not_match_count=0;
 $match_count=0;
 for($i=0;$i<sizeof($arr);$i++){
$name=$arr[$i]['SaleId'];
if (!preg_match("/^[0-9a-zA-Z.'@'+'-'_]*$/",$name)) {
 $not_match_count=$not_match_count+1;
}
else{
$match_count=$match_count+1;
}
}
echo $not_match_count."<br>".$match_count;// your expected output
?>