在php电子邮件中的$value之间添加逗号,并从电子邮件中删除空值
我得到了一个email.php,可以从我网站上的表单发送电子邮件在php电子邮件中的$value之间添加逗号,并从电子邮件中删除空值,php,email,Php,Email,我得到了一个email.php,可以从我网站上的表单发送电子邮件 <?php $name = $_POST['name']; $visitor_email = $_POST['email']; $phone = $_POST['phone']; $date = $_POST['date']; $add = $_POST['add']; $prod1 = $_POST['prod1']; $prod2 = $_POST['prod2']
<?php
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$phone = $_POST['phone'];
$date = $_POST['date'];
$add = $_POST['add'];
$prod1 = $_POST['prod1'];
$prod2 = $_POST['prod2'];
$prod3 = $_POST['prod3'];
$prod4 = $_POST['prod4'];
$price = $_POST['item_price'];
$email_from = 'MySite <info@mywebsite.com>';//
$email_subject = "Your order order has been received";
$email_body = "Your booking details are as follows:\nName: $name\nPhone: $phone\nDate: $date\nAddress: $add\nProducts: $prod1 / $prod2 / $prod 3 / $prod4\nTotal: $ $price";
$to = "$visitor_email, $email_from";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $email_from \r\n";
//Send the email!
mail($to,$email_subject,$email_body,$headers);
//done. redirect to thank-you page.
header('Location: thank-you.html');
?>
问题:并非所有选项都是必需的,如果未填写某些选项,则电子邮件如下所示:
Your booking details are as follows:
Name: Name
Phone: Phone Number
Date: Date
Products: Product 1 / Product 2 / Product 3 / Product 4
Total: $100
Your booking details are as follows:
Name: Name
Phone:
Date:
Products: Product 1 / / Product 3 /
Total: $60
有什么办法可以对其进行排序吗?在打印之前,您必须测试变量内容 对于产品,您可以存储在数组中并内爆值 试着这样做:
$email_body = "Your booking details are as follows:\n";
if ($name) $email_body .= "Name: $name\n";
if ($phone) $email_body .= "Phone: $phone\n";
if ($date) $email_body .= "Date: $date\n";
if ($add) $email_body .= "Address: $add\n";
$prods = [] ;
if ($prod1) $prods[] = $prod1 ;
if ($prod2) $prods[] = $prod2 ;
if ($prod3) $prods[] = $prod3 ;
if ($prod4) $prods[] = $prod4 ;
// $email_body .= "Products: " . implode(" / ", $prods) . "\n";
$email_body .= "Products: " . implode(", ", $prods) . "\n"; // with ", " separator
$email_body .= "Total: $ $price";
在打印变量之前,必须测试变量内容 对于产品,您可以存储在数组中并内爆值 试着这样做:
$email_body = "Your booking details are as follows:\n";
if ($name) $email_body .= "Name: $name\n";
if ($phone) $email_body .= "Phone: $phone\n";
if ($date) $email_body .= "Date: $date\n";
if ($add) $email_body .= "Address: $add\n";
$prods = [] ;
if ($prod1) $prods[] = $prod1 ;
if ($prod2) $prods[] = $prod2 ;
if ($prod3) $prods[] = $prod3 ;
if ($prod4) $prods[] = $prod4 ;
// $email_body .= "Products: " . implode(" / ", $prods) . "\n";
$email_body .= "Products: " . implode(", ", $prods) . "\n"; // with ", " separator
$email_body .= "Total: $ $price";
根据值生成
$email\u body
,如果(!empty($phone)){$email\u body.=“\nPhone:$phone”}。我看不出用逗号代替斜杠有什么问题,你有错误吗?将它们添加到您的问题中。根据值构建$email\u body
,如果(!empty($phone)){$email\u body.=“\nPhone:$phone”}。我看不出用逗号代替斜杠有什么问题,你有错误吗?将它们添加到你的问题中。这很有效。但是有一个问题,如果说根本没有选择任何产品,而且它完全是空的,那么我如何才能不让“产品:”出现在电子邮件中?@DilMarc try:if(!empty($prods))$email_body.=“产品:”。内爆(“,”,$prods)。“\n”代码>非常好。它起作用了。我试了一整天,你的解决方案效果很好。非常感谢你!这很有效。但是有一个问题,如果说根本没有选择任何产品,而且它完全是空的,那么我如何才能不让“产品:”出现在电子邮件中?@DilMarc try:if(!empty($prods))$email_body.=“产品:”。内爆(“,”,$prods)。“\n”代码>非常好。它起作用了。我试了一整天,你的解决方案效果很好。非常感谢你!