我试图验证文本文件中是否存在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";
}
}
答案 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;
}
}