我有一个文件,它基本上是该格式的名称列表:
name.lastname
name.lastname
name.lastname
myname.mylastname
name.lastname
我想检查我拥有的字符串是否等于其中一个名称(带点(。
这就是我已经尝试过的:
$username = "myname.mylastname";
$boolean = False;
$handle = fopen("thelist.txt","r");
while (($line = fgets($handle)) !== false) {
if ($line === $username){
$liste = True;
}
}
在那份名单之后,我一直是假的,我不知道为什么。
提前致谢:)
我看到了一些潜在的问题。
首先$boolean = False;
时$liste = True;
,因此输出变量中可能存在拼写错误。
第二个问题是thelist.txt
不是绝对的道路。因此,文件资源可能加载失败。强烈建议您使用文件资源(如/full/path/to/file
或__DIR__ . '/path/to/file'
(的绝对路径。
主要问题是fgets
将在文件中每行的末尾包含r
和n
,这在比较的字符串变量中不存在。可以使用trim
删除无关的行尾和空格,以便与字符串变量进行比较。
示例:https://3v4l.org/4VG4D
$username = "myname.mylastname";
$liste = false;
$handle = fopen("thelist.txt", 'rb');
while (false !== ($line = fgets($handle))) {
if (trim($line) === $username){
$liste = true;
break; //stop at first match
}
}
fclose($handle);
var_dump($liste); //true