如何在php中将文本文件转换为数组

如何在php中将文本文件转换为数组,php,Php,我带着另一个问题回来了,希望你能帮助我 我有一个包含电子邮件地址和名称的文本文件,如下所示: samplename@sampledomain.com | samplename samplename@sampledomain.com | samplename 现在我想把这个文本文件转换成一个数组,这样我就可以用file\u get\u的内容来证明这个列表中是否已经有电子邮件或名称 我该怎么做 我已经尝试了很多代码,但都不起作用 相关代码: 错误:由最后一行代码引起 为什么我的代码不起作用?我必须

我带着另一个问题回来了,希望你能帮助我

我有一个包含电子邮件地址和名称的文本文件,如下所示:

samplename@sampledomain.com | samplename
samplename@sampledomain.com | samplename
现在我想把这个文本文件转换成一个数组,这样我就可以用file\u get\u的内容来证明这个列表中是否已经有电子邮件或名称

我该怎么做

我已经尝试了很多代码,但都不起作用

相关代码:

错误:由最后一行代码引起

为什么我的代码不起作用?我必须改变什么?请帮助我。

使用file\u get\u contents返回一个包含文件内容的字符串,因此您必须将其处理为一个数组,以便在\u数组中使用。它还将每次读取所有文件,并可能构建每个条目的数组,即使第一行匹配

代码中有一些问题,所以我将发布一个版本,该版本可以根据您的需要执行。这会将文件视为CSV,尽管以|分隔,但也必须修剪字段以正确比较它们

我添加了一些评论来展示我所做的

$email = $_GET['email'];    // Don't add PHP_EOL
$name = $_GET['name'];      // Don't add PHP_EOL
// Open file for reading
$file = fopen('anfragen.txt', "r");
$found = false;
// Read line as a csv, with | as the delimeter
while ( $line = fgetcsv($file, null, "|"))    {
    // Check row for matching details
    if ( trim($line[0]) == $email || trim($line[1]) == $name )   {
        echo "found".PHP_EOL;
        // Flag that row is found and stop reading
        $found = true;
        break;
    }
}
fclose($file);
if ( !$found )  {
    echo "Not found".PHP_EOL;
}

如果您这样做:“$file”带有单引号,则您正在创建一个包含文本内容$file的字符串。这意味着您将传入一个字符串作为第二个参数。如果要使用该变量,根本没有理由引用它们,双引号将起作用,但不必要:在_array$name$file中。但是,只有当完整的文件内容匹配而不是部分匹配时,才会返回true!成功了!但我还有最后一个问题:是否有必要删除PHP_EOL?因为在每封邮件和名字后面都有一行新行,这非常有用。如果你想用新行显示它们,在显示数据时将其添加到其中,但是当你想进行比较时,您还必须将其添加到文件之外的电子邮件中才能获得匹配。当您显示数据时,将其添加到电子邮件中是什么意思?编辑:我刚刚在我的fwrite之后添加了一行,上面写着:fwrite$handle,\n;关闭
in_array() expects parameter 2 to be array, string given in C:\xampp\htdocs\tutorial2.php on line 9
$email = $_GET['email'];    // Don't add PHP_EOL
$name = $_GET['name'];      // Don't add PHP_EOL
// Open file for reading
$file = fopen('anfragen.txt', "r");
$found = false;
// Read line as a csv, with | as the delimeter
while ( $line = fgetcsv($file, null, "|"))    {
    // Check row for matching details
    if ( trim($line[0]) == $email || trim($line[1]) == $name )   {
        echo "found".PHP_EOL;
        // Flag that row is found and stop reading
        $found = true;
        break;
    }
}
fclose($file);
if ( !$found )  {
    echo "Not found".PHP_EOL;
}