我想检查标准输入中的几个IP地址。
而且我一遍又一遍地犯了错误...
preg_match_all()期望参数2为字符串,数组为 /workspace/Main.php,第14行
我尝试放置字符串,但是它重新协调了标准输入只是一部分...所以结果总是错误的...。 如何运作?
我想要的结果是 假 真正 假 是
现在我有了这段代码。
标准输入:
4
192.400.1.10.1000...
4.3.2.1
0..33.444...
1.2.3.4
我的代码:
<?php
$input = trim(fgets(STDIN));
while ($input){
$array[] = $input;
$input = trim(fgets(STDIN));
}
$test = checkIPAddr($array);
print_r($array);
function checkIPAddr($ip){
$result = "False";
if (preg_match_all('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',$ip)){
$result = "True";
}
return $result;
}
echo $test;
?>
答案 0 :(得分:2)
您在preg_match_all中的第二个参数是一个数组。它只能接受字符串。
if (preg_match_all('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',$ip)){
$ ip是一个数组。
答案 1 :(得分:0)
尝试对您的代码进行小的修改:
<?php
$input = trim(fgets(STDIN));
while ($input){
$array[] = $input;
$input = trim(fgets(STDIN));
}
if(checkIPAddr($array)){ echo "True";}
else {echo "False";}
function checkIPAddr($ip){
if (preg_match_all('/^(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)(?:[.](?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|\d)){3}$/',$ip)){
return true;
}
else {return false;}
}
?>