PHP';s strcmp函数提供奇怪的输出?

PHP';s strcmp函数提供奇怪的输出?,php,strcmp,Php,Strcmp,我有一个名为users.txt的文件,其中有许多行用户名和密码组合。以下是此文件的一个示例: kyle:pass1 steve:pass2 john:pass3 ralph:pass4 因此用户名应该是steve,密码应该是pass1。这些信息通过POST传递到我的文件login.php。以下是我到目前为止所写的内容: $username = $_POST["name"]; $password = $_POST["password"]; $lines = file("users.txt");

我有一个名为
users.txt
的文件,其中有许多行用户名和密码组合。以下是此文件的一个示例:

kyle:pass1
steve:pass2
john:pass3
ralph:pass4
因此用户名应该是
steve
,密码应该是
pass1
。这些信息通过POST传递到我的文件login.php。以下是我到目前为止所写的内容:

$username = $_POST["name"];
$password = $_POST["password"];

$lines = file("users.txt");
foreach($lines as $line) {
    $inputUserInfo = explode(":", $line);
    $inputUsername = $inputUserInfo[0];
    $inputPassword = $inputUserInfo[1];
    if (strcmp($username, $inputUsername) == 0) {
        echo 'username matched!';
    }
    if (strcmp($password, $inputPassword) == 0) {
        echo 'password matched!';
    }
}
我不确定发生了什么,但是用户名匹配得很好,因为方法
strcmp
返回0。然后,当我尝试匹配
steve
pass2
的密码或任何其他理论上有效的组合时,方法
strcmp
返回-2、-1或除零以外的任何值


我真的不知道为什么会这样,我已经想尽了一切办法。有人能告诉我这是怎么回事吗

别忘了在您的:

这基本上会在密码字段中添加
换行符
。如果仔细检查,您的密码中会添加一些换行符:

var_dump($inputPassword);

因此,不匹配。

如果有两个答案都是相同的,那就没用了:)@Rizier123没想到你自己也在写一个,它就在几秒钟前,我要向上投票,因为它是正确的,如果你想添加这个:
echo”“;变量转储(str_替换(PHP_EOL,¶;“,$line))啊,那些讨厌的新行字符,完全忘记了那些。。。非常感谢你@凯尔很高兴这有帮助
var_dump($inputPassword);
string(7) "pass2 
        "