我有一个文件,基本上是该格式的名称列表:
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
关于PHP逐行获取文件并与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022615/