将PHP变量与文本文件中的值进行比较

时间:2016-03-02 20:19:32

标签: php arrays foreach text-files strpos

我试图验证文本文件中是否存在php变量值,然后回显该值。使用下面的代码,只有当变量中的值等于文本文件中的最后一个值时,我的if语句才为真。如果变量中的值等于第一个,第二个,第三个等值,则if语句为false。

这是我的代码:

$lines = file("file.txt");
$value = $_GET['value'];

    foreach ($lines as $line) {
        if (strpos($line, $value) !== false) {
            $output = $line;
        } else {
            $output = "Sorry, we don't recognize the value that you entered";
        }
    }

2 个答案:

答案 0 :(得分:1)

如评论中所述,您使用行数据或错误消息覆盖每个循环的变量。

   foreach ($lines as $line) {
        if (strpos($line, $value) !== false) {
            $output[] = $line;
        }
    }

    if(empty($output)){
      echo "Sorry, we don't recognize the value that you entered";
    } else {
      print_r($output);
    }

答案 1 :(得分:1)

另一个答案会更正您的代码,但要使用较少的代码匹配1个或更多:

$output = preg_grep('/'.preg_quote($value, '/').'/', $lines);

使用现有方法只进行1次匹配,然后break离开循环和/或定义"抱歉......"输出之前:

$output = "Sorry, we don't recognize the value that you entered";

foreach ($lines as $line) {
    if (strpos($line, $value) !== false) {
        $output = $line;
        break;
    }
}