You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHPMailer的$mail->Body中添加条件表达式隐藏空手机号标签?

解决PHP表单手机号非必填时隐藏标签的问题

你原来的代码错误在于不能在字符串拼接过程中直接嵌入if-else语句,PHP语法不支持这种写法。下面给你两种可行的实现方式:

方式一:分步拼接内容

先初始化基础内容,再根据手机号是否为空追加对应段落,最后拼接剩余内容:

// 先设置基础的表单内容
$mail->Body = "
  <p><strong>Name: </strong> $full_name</p> 
  <p><strong>Email: </strong> $email</p>
";

// 判断手机号不为空时,追加手机号段落
if ($phone !== '') {
    $mail->Body .= "<p><strong>Phone: </strong> $phone</p>";
}

// 拼接最后的消息内容
$mail->Body .= "
  <p><strong>Message: </strong> $message</p> 
";

方式二:使用三元表达式(正确写法)

如果想用三元表达式,需要用花括号{}把整个表达式包裹起来,确保PHP能正确解析双引号内的变量:

$mail->Body = "
  <p><strong>Name: </strong> $full_name</p> 
  <p><strong>Email: </strong> $email</p>
  {$phone !== '' ? "<p><strong>Phone: </strong> $phone</p>" : ''}
  <p><strong>Message: </strong> $message</p> 
";

为什么你之前的三元表达式没成功?

大概率是没加花括号包裹表达式,或者用了单引号(单引号内的变量不会被PHP解析,会直接输出$phone字符串)。上面的写法用双引号包裹内容,并用花括号把三元表达式括起来,就能正常解析变量和判断逻辑了。

内容的提问来源于stack exchange,提问作者LOTUSMS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:02:33