【问题标题】:check if email exsite in txt file using PHP使用 PHP 检查 txt 文件中的电子邮件是否存在
【发布时间】:2020-06-04 01:35:09
【问题描述】:

我正在使用此代码检查输入的电子邮件是否存在于文本文件中

$handle = fopen("http://mywebsite/u.txt", "r");
if ($handle) {
    while (($line = fgets($handle)) !== false) {
        $line = preg_replace('/\s+/', ' ', $line);
        if($line=$email){
            echo "email existe";
        }
    }

    fclose($handle);
} else {
    // error opening the file.
}

现有电子邮件的输出与文本文件中不存在的电子邮件相同

电子邮件存在电子邮件存在电子邮件存在

文本文件包含作为测试电子邮件

  • test@test.com
  • hello@world.com
  • test@t.com

如果我做了 == 当 $line = $email 时它没有输入条件

尝试

echo $line." ".$email;

输出

test@test.com test@test.comtest@test.com test@test.comtest@test.com test@test.com

【问题讨论】:

  • 良好的代码缩进将帮助我们阅读代码,更重要的是它会帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • if($line=$email) if($line==$email) 和一个额外的 =。试试看。如果它有效,则有一个副本。
  • 您可能需要trim() 行和电子邮件以确保没有空格/新行
  • 不,这还不够,因为当我运行你的代码但在你的 preg_replace 后面加上 var_dump($line); 时,它后面还有一个空格。
  • 嗯....现在事情变得复杂了。如果您可以.htaccess,您可以只允许您的服务器访问该文件,而不允许其他任何人访问。 See this answerthis Q&A 可能会有所帮助。不客气 :) 很高兴知道事情成功了。

标签: php file text


【解决方案1】:

我不知道我是否理解正确,但在这里你对问题的解决方案略有不同

// File from http
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$handle = curl_exec($ch);
curl_close($ch);   

// or
$handle = file_get_contents("u.txt");
//or
$handle = "test@test.com \n hello@world.com";


$find = "hello@world.com";

if (strpos($handle, $find) > -1){ 
    echo "Found" ; 
} else{ 
    echo "Not Found"; 
} 

【讨论】:

  • 这可能比逐行循环更快。但即使它有效,我也不确定我是否喜欢 >-1 的东西。如果没有找到,Strpos 将返回 false。让它!== false
【解决方案2】:

您的代码失败有两个原因。

1) if($line=$email) 是一种赋值方法,始终为 TRUE。您希望使用 == 比较方法。

2) 您需要使用trim(),因为它会处理文件中包含的换行符。此处的另一位成员(Aynber)对此进行了概述。向他们致敬。

每人:

“您可能需要 trim() 行和电子邮件,以确保没有空格/新行 – aynber”

“put var_dump($line); 在你的 preg_replace 之后,它后面还有一个空格。”

【讨论】:

  • 我发现它只适用于第一行 test@test.com 但对于 hello@world.com 它不起作用,我需要做 foreach...,如何请问我可以这样做吗
  • @user11845248 哦,我明白了。为什么你还需要foreach
  • @user11845248 看看this Q&Athis onethis one。也许其中有一些东西可以帮助解决您遇到的新问题。我在谷歌搜索“如果文件 php -mysql 中存在用户密码”时发现了这些。 Google 中“mysql”前面的- 表示“不包含mysql”。
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 2012-02-25
  • 1970-01-01
  • 2016-12-22
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多