我有一个表单,提交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
逗号作为断点,将常规帖子数据从输入字段,
分解为数组的最快,最干净的方法是什么。
答案 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));
?>
语法: 爆炸(分隔符,字符串,限制)。在您的情况下,您希望逗号成为分隔符,这就是分隔符应该是逗号的原因。