PHP逐行获取文件并与字符串进行比较

标签 php string list file compare

我有一个文件,基本上是该格式的名称列表:

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/

相关文章:

XML 将单个字符串 XML 转换为格式正确的文件以进行编辑?

algorithm - 在线大厅系统 - 游戏列表

perl - 给定 Perl 的成对关系列表,如何创建唯一的集合?

php - php date() 和 time() 函数的可移植性

python - 如何为 python 中的内置数据类型创建新方法和属性?

c# - 用数组初始化列表

vb.net - List.Contains 返回 false,即使它看起来应该返回 true

php - 在 Zend Framework 中发送下载的多部分响应

php - Filesystem.php 第 111 行中的 ErrorException :file_put_contents(): failed to open stream: No such file or directory

php - 从5.2.17升级到5.4.24版本后,PHP中的异常