如何检查数组中只包含四位数字的值?如果有超过四位数的字符串或数字,我想回显错误信息。
这是正确的:$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';
输出是:失败原因是什么?
答案 0 :(得分: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>';
}
}
答案 1 :(得分:2)
这些不是数组(它们是字符串),但您可以通过将字符串拆分为数组并使用PHP's filtering(在这种情况下为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;
}
答案 2 :(得分: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";
}
?>
答案 3 :(得分:0)