0

如何检查仅包含四位数字的数组中的值?如果有超过四位数的字符串或数字,我想回显一条错误消息。

这是对的:$searchText = '3423, 2453, 3245 , 2425, 6765';

这是错误的:$searchText = '34d23, 244353, fsddf , 2d4425, 674365';

我怎样才能做到这一点?

我尝试过这样的事情......

$searchText = '3423,2453,3245,2425,6765';       


function validate($input) {
    $searchArray = array_map('trim', explode(',', $input));
    foreach($searchArray as $item) {
        if(filter_var($item, FILTER_VALIDATE_INT) === false || strlen($item) != 4)
            return false;
    }
}

if(!validate($searchText))
    echo 'fail';
else
    echo 'pass';

输出是:失败为什么会这样?

4

4 回答 4

3
$searchText = '3423, 2453, 3245 , 2425, 6765';

$vals = explode(",",$searchText);

foreach($vals as $v){
    $v = trim($v);
    if(is_numeric($v) && strlen($v)==4){
        echo 'good to go<br>';
    }elseif(is_numeric($v)){
        echo 'num but not 4 digits<br>';
    }else{
        echo 'string<br>';
    }
}
于 2012-11-03T05:43:33.383 回答
2

这些不是数组(它们是字符串),但您可以通过将字符串拆分为数组并使用PHP 的过滤filter_var在本例中)来处理问题:

if(!validate($searchText))
    // fail
else
    // pass

function validate($input)
{
    $inputArray = array_map('trim', explode(',', $input));
    foreach($inputArray as $item) {
        if(filter_var($item, FILTER_VALIDATE_INT) === false || strlen($item) != 4)
            return false;
    }
    return true;
}
于 2012-11-03T05:49:43.410 回答
1

您可以使用以下逻辑。(如果您的意思是“如何检查数组中的值,其中的数字仅包含四位数字?”,那么下面是解决方案)

<?php
//you can use explode() function to convert your string into array.
//$searchText = '3423, 2453, 3245 , 2425, 6765';    
//$searchText = explode(",",$searchText);

$searchText = array('3423', '2453', '3245' , '2425', '6765');
$count = sizeof($searchText);
foreach($searchText as $key=>$value) {


    if (is_numeric($value) && preg_match('/^\d{4}$/', $value)) {

      // pass
    } else {

        $count--;
       // fail
    }

}

if($count == sizeof($searchText)) {
    echo "All good";
}
?>
于 2012-11-03T05:47:05.063 回答
0

用 $ary 替换你的数组变量这是返回的字符数在数组中

$maxlen = max(array_map('strlen', $ary));

为了更好地解释StackOverflow

于 2012-11-03T05:43:48.267 回答