PHP函数return语句中嵌入HTML代码的写法及有效性疑问
问题解答
运行结论
你编写的这段代码无法正常运行,会直接触发PHP语法级错误,根本无法完成执行。
错误原因
- 你传入
message()方法的HTML片段没有用字符串边界符(单/双引号)包裹,PHP解析器不会把它识别为字符串内容,会将其判定为非法语法,直接抛出解析错误。 - 你给
message()方法传了2个参数,但按照你的描述,该方法设计为接收传入的字符串并返回,默认仅支持1个字符串类型参数,多传参数也会触发参数数量不匹配的报错。
正确实现方式
你需要把提示文案和邮箱超链接拼接成完整的单个字符串,作为唯一参数传入message()方法即可,修正后的代码如下:
public function mail() { return (new Mail) ->subject('Welcome') ->message('Send questions to <a href="mailto:xxx@email.com">xxx@email.com</a>'); }
额外注意事项
- 上述写法生效的前提是你使用的Mail类发送的是
text/html类型的邮件,如果是纯文本格式邮件,HTML标签会被直接当做明文展示,不会生成可点击的超链接。 - 如果Mail类的
message方法默认会对传入内容做HTML特殊字符转义(多数类库为防范XSS风险会默认开启该逻辑),你需要查阅对应类库的使用说明,找到支持传入原生HTML内容的对应传参方式,否则最终邮件里会直接显示<a>标签源码,无法渲染为超链接。
内容的提问来源于stack exchange,提问作者Yaya
相关产品推荐
相关产品推荐

