将php中的电子邮件列表分别添加到php数组中

时间:2014-08-04 23:25:30

标签: php arrays codeigniter email

我有一个表单,提交codeigniter电子邮件类并向我的客户发送电子邮件。我有一个简单的to输入字段。

<input type="text" name="to" class="form-control">

我希望能够在这个字段中键入多个电子邮件地址,并立即向他们发送电子邮件。这在codeigniter中非常简单我只需要将电子邮件放入一个数组并放在codeigniter中的to param中。

所以我希望能够在字段中键入类似下面的内容,提交它,将后置数据分解为一个断点为,或逗号的数组。

someone@me.com, yournamehere@example.com, myself@myowndomain.com

以上内容需要进入如下数组:

$list = array(
   'someone@me.com',
   'yournamehere@example.com',
   'myself@myowndomain.com,
);

我真正的问题是,使用to逗号作为断点,将常规帖子数据从输入字段,分解为数组的最快,最干净的方法是什么。

2 个答案:

答案 0 :(得分:2)

放手一搏;它对我来说很好,同时添加preg_replace()来删除所有空格。

另外,还有第二种方法使用过滤方法来帮助防止使用PHP的XSS injection过滤器{/ 3}}。

<?php 

if(isset($_POST['submit'])){

    $to = $_POST['to'];
    $var = explode(',', $to);
    $me = "you@example.com";

foreach($var as $mailto){

    $mailto = preg_replace('/\s+/', '', $mailto); // remove all whitespace

    $subject = 'Message subject ' . $name; // optional variable
    $message = "Hello there.";

    $headers = "From: {$me}\r\n";
    $headers .= "Reply-To: {$mailto}\r\n";

    mail($mailto, $subject, $message, $headers);
    }

} // brace for isset

?>

<form action="" method="post">

<input type="text" name="to" class="form-control">

<input type="submit" name="submit" value="Send">

</form>

使用PHP的FILTER_VALIDATE_EMAIL过滤器使用过滤方法。

<?php 

if(isset($_POST['submit'])){

    $to = $_POST['to'];
    $me = "you@example.com";
    $to = preg_replace('/\s+/', '', $to);

foreach(explode(",", $to) as $mailto){
   if(!filter_var($mailto, FILTER_VALIDATE_EMAIL)) 
       { die("Sorry."); }

else{

    $subject = 'Message subject from ' . $name; // optional variable
    $message = "Hello there.";

    $headers = "From: {$me}\r\n";
    $headers .= "Reply-To: {$mailto}\r\n";

if(mail($mailto, $subject, $message, $headers)){
echo "Mail sent to $mailto ";
            }
        }

    }


} // brace for isset

?>

<form action="" method="post">

<input type="text" name="to" class="form-control">

<input type="submit" name="submit" value="Send">

</form>

答案 1 :(得分:0)

使用PHP explode()功能。 PHP documentation中更好的手册。 这是一个想法,但如果您要在后端接收这些用逗号分隔的电子邮件,则应使用$ _GET或$ _POST。

<?php
    //$str = $_POST['emails'];
    $str = "someone@me.com, yournamehere@example.com, myself@myowndomain.com";
    print_r (explode(",",$str));
    ?>

语法: 爆炸(分隔符,字符串,限制)。在您的情况下,您希望逗号成为分隔符,这就是分隔符应该是逗号的原因。