使用爆炸和foreach逐个显示电子邮件


display email one by one using explode and foreach

我尝试在循环中逐个显示电子邮件地址。但是,它只是在一行中打印所有的电子邮件地址。

电子邮件.txt

"第一封电子邮件"、"第二封电子邮件","第三封邮件"、"四封邮件","五封邮件"

电子邮件.php

<?php 
$count=1;
$emails=readfile("../email.txt");
$email=explode(",",$emails);
foreach($email as $e){
    echo "$count Email : $e<br />'n";
$count=$count+1;
}
?>

预期输出

"第一封电子邮件"

"第二封电子邮件"

"thirdmail"

"第四封电子邮件"

"fifthemail"

但是,我得到

"第一封电子邮件"、"第二封电子邮件","第三封邮件"、"四封邮件","五封邮件"

readfile()基本上就是这样做的;它读取文件并输出。返回值是读取了多少字节(我在您的输出中看不到)。

我承认,对于这样一个函数来说,这是一个非常糟糕的名字,但这是你在用PHP开发时会看到的有趣的东西:-)

无论如何,您要查找的函数是file_get_contents():

$emails = file_get_contents("../email.txt");

更新

在我看来,你实际上是在寻找fgetcsv():

$f = fopen('../email.txt', 'rt');
while (!feof($f)) {
    $row = fgetcsv($f);
    if ($row == false || $row[0] === null) {
        continue;
    }
    // $row is an array comprising the email addresses on one line
}

您的代码应该如下所示:

<?php 
$count=1;
$emails= file_get_contents("../email.txt");
$email=explode(",",$emails);
foreach($email as $e){
    echo "$count Email : $e<br />'n";
$count=$count+1;
}
?>

输出:1封电子邮件:"第一封电子邮件"2电子邮件:"第二封电子邮件"3电子邮件:"thirdmail"4电子邮件:"第四封电子邮件"5电子邮件:"fifthemail"

显示的代码与您提到的输出不一致。。。

此代码段假定您不需要编号,而只需要在每行中都有一个电子邮件地址。但一个正确的代码片段应该是这样的:

<?php
if (file_exists('../email.txt'))
{
   $file_contents = file_get_contents('../email.txt');
   $emails = explode(',', $file_contents);
   foreach ($emails as $e)
   {
      echo $e."<br>'n";
   }
}
else
{ 
   echo 'file does not exist!';
}
?>