如何在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
相关产品推荐
相关产品推荐

