我有一个多维数组,希望与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;
解释正则表达式:
- 小写字母
- 大写字母
- 数字
- 特殊字符@+-_
但是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
?>