Hy,
我的报价有问题。我正在制作一个html邮件通讯,这是一场噩梦。我已经阅读了很多关于如何解决这个问题,但没有什么是行不通的。我试过没有引号,用\ ......什么都行不通(也许我做错了什么)。
所以,让我们说这是代码:
echo '<td style="
background-image:url(?http://x/y/image.png?);
"
</td>';
? - 使用什么报价
答案 0 :(得分:3)
如果你想要引用它应该是这样的,但在这种情况下你并不真正需要它们。 如果您使用单引号打开,则必须转义字符串中的所有单引号。
echo '<td style="
background-image:url(\'http://x/y/image.png\');
"
</td>';
据我所知,html邮件中的css非常有限,特别是定位。但我可能是错的。
答案 1 :(得分:2)
引用在CSS中是可选的,用于后台网址 - 所以只需省略它们。
这是一个类似的问题,有关于此的更多信息: Is quoting the value of url() really necessary?
此外,您可以通过在\
前放置引号来逃避引用,例如url(\'http://www.domain.com\')
至于HTML邮件问题。最好的标准是坚持使用桌子和桌子。内联样式CSS。我会避免任何相对/绝对定位。即使某些电子邮件客户端可能正确显示它,但并非所有人都会。所以最好尽可能保持一致并避免某些标记。
答案 2 :(得分:2)
转义示例代码中的单引号,如下所示:
echo '<td style="
background-image:url(\'http://x/y/image.png\');
"
</td>';
答案 3 :(得分:2)
在引号前使用\
来转义字符串的结尾:
echo '<td style="
background-image:url(\'http://x/y/image.png\');
"
</td>';
答案 4 :(得分:2)
报价是可选的:Is quoting the value of url() really necessary?
但是,你可以逃脱它们:
echo "<td style=\"url('example.com')\"";
或
echo '<td style="url(\'example.com\')";
答案 5 :(得分:2)
我不认为这是选择正确引号的问题。正如许多其他人已经指出的那样,引号是可选的,或者,您可以简单地转义引号,它仍然有效。
我认为问题在于并非所有邮件客户端都支持background-image
,特别是Microsoft Outlook 2007+甚至Outlook.com 都不支持
我建议在电子邮件客户端的CSS支持级别上咨询以下资源。
您可能想要尝试的一种解决方法是使用background
而不是background-image
。
此外,如果您在构建HTML电子邮件时遇到问题,也可以尝试https://www.mailrox.com/。我自己没试过,但不能评论产品有多好。
答案 6 :(得分:0)
css url()
中不需要引号。
答案 7 :(得分:0)
您可以尝试使用以下方法:
echo <<<HTML
<td style="background-image:url('image/url/here.jpg');">Table Data</td>
HTML;
如果你的笔记确定如何使用它,请查看PHP EOD:PHP.net Strings
还要确保您在电子邮件标题中设置了正确的内容类型和字符集(例如$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
)以及PHP,具体取决于您使用简报模板的方式。
创建电子邮件时CSS可能会受到限制,因为邮件客户端的变化远远超过浏览器,有些人比其他客户端支持更多。试一试,一定要检查多个浏览器和电子邮件客户端。
希望这有帮助。
莱昂。
答案 8 :(得分:0)
你应该使用heredoc语法。
echo<<<EOT
<td style="background-image:url(?http://x/y/image.png?);"
</td>
EOT;
当您需要使用变量时,以及需要打印引号时,这非常有用。
确保EOT线上没有其他内容,否则无效。