0

4 桁しかない数値を含む配列の値を確認するにはどうすればよいですか? 4 桁を超える文字列や数字がある場合は、エラー メッセージを表示したい。

正解です:$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 に答える
0

配列変数を $ary に置き換えます。これは配列内の文字数を返します

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

より良い説明のために

于 2012-11-03T05:43:48.267 に答える