php如何检查可变字符串?

时间:2019-12-10 07:50:26

标签: php

我想检查标准输入中的几个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;
?>

2 个答案:

答案 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;}

    }
    ?>