2016-03-02 115 views
1

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

这里是我的代码:

$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"; 
     } 
    } 
+1

您每次都会覆盖'$ output'变量。你能指望什么? –

+2

只有1个匹配:'$ output = $ line;打破;' – AbraCadaver

+0

谢谢AbraCadaver - 这实际上为我工作。 – brandozz

回答

1

对方回答纠正你的代码,然而,用更少的代码匹配1个或多个:

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

要使用现有方法只有1匹配,那么break圈外的和/或定义“Sorry ...”输出之前:

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

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

我也可以使用in_array吗? if(in_array($ value,$ lines)) – brandozz

+0

只有在行和值相同的情况下。含义'测试'不符合'测试线'等... – AbraCadaver

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); 
    } 
相关问题