PHP-将表单值与数组中的值进行比较

PHP-将表单值与数组中的值进行比较,php,text,compare,document,Php,Text,Compare,Document,我试图编写一个代码,将文本文档中的值与表单中发布的值进行比较 到目前为止,我已经知道了,但我绝对肯定我正在做一些事情 提前感谢您的帮助 <form method="POST" action="file.php"> <p> <br /><input type="text" name="name" ><br /> </p> <p><input type="submit" value="Check" />

我试图编写一个代码,将文本文档中的值与表单中发布的值进行比较

到目前为止,我已经知道了,但我绝对肯定我正在做一些事情

提前感谢您的帮助

<form method="POST" action="file.php"> 
<p>
<br /><input type="text" name="name" ><br />
</p>
<p><input type="submit" value="Check" /></p>
</form>

<?php
if (isset($_POST['name'])) {
    $name = $_POST['name'];

    /*The text document contains these written names: 
    Michael 
    Terry 
    John 
    Phillip*/ 

    $lines = file('names.txt'); 

    $names_array = ($lines);   

        if (in_array($name, $names_array)) {
            echo "exists";
        } else {
            echo 'none';
        }
}
?>





更新:已修复,现在工作正常阅读有关
文件的文档:

注:

结果数组中的每一行都将包含行尾,除非使用了文件\u IGNORE\u NEW\u line,因此如果不希望出现行尾,仍然需要使用rtrim()


问题在于
文件('names.txt')
函数。尽管这返回一个数组,其中每一行都在一个单独的键中,但它还包括同一行上的换行符

因此,您的数组实际上包含:

$lines[0] = "Michael\n";
$lines[1] = "Terry\n";
$lines[2] = "John\n";
$lines[3] = "Phillip\n";
为了防止这种情况发生,请使用
file('names.txt',file\u IGNORE\u NEW\u行)

现在你的名字应该匹配了

除此之外,你为什么要使用下面的方法

$lines = file('names.txt'); 
$names_array = ($lines);

//simply use the following.
$names_array = file('names.txt', FILE_IGNORE_NEW_LINES); 


大宗报价

data.txt

迈克尔·特里·约翰·菲利普

data.txt有空格,所以我们使用trim()将其删除


是的,刚刚意识到我在那里为自己做了更多的工作!修好了!谢谢谢谢你的帮助,现在一切都按照我所需要的方式进行了!标记为答案!这只是一个糟糕的解决方案。首先,它不需要在所有线路上循环。然后,要解决这个问题,需要将修剪过的版本添加到数组的末尾,使其长度增加一倍。因此,列表中的所有名称都会加倍,一次带换行符,一次不带换行符。你还随机添加了一个$i,你毫无理由地增加了它。@HugoDelsing-我对PHP真的很陌生,所以如果上面的答案充满了不必要的代码,谢谢你指出!我尝试了你的建议,添加了“忽略新行”,但它仍然不适合我。即输出无而不是存在。还有其他想法吗?数组(4){[0]=>string(7)“Michael”[1]=>string(5)“Terry”[2]=>string(4)“John”[3]=>string(7)“Phillip”}自己试试Niladri:
$lines=array(“test”,“test2”);foreach($line作为$line){$line[]=$line;}var_dump($line)并且您会注意到在最终转储中将有4个键。
$lines = file('names.txt'); 
$names_array = ($lines);

//simply use the following.
$names_array = file('names.txt', FILE_IGNORE_NEW_LINES); 
/*The text document contains these written names: 
Michael 
Terry 
John 
Phillip*/ 

$lines = file('data.txt'); //Lets say we got an array with these values   //$lines =array('Michael','John','Terry','Phillip');    $i=0;
foreach($lines as $line)   {
$lines[$i] =trim($line);
$i++;   }    

    if (in_array($name, $lines)) {
        echo "exists";
    } else {
        echo 'none';
    } } ?