嗨,
我在引用时遇到问题。我正在编写一份 html 邮件时事通讯,这是一场噩梦。我已经阅读了很多有关如何解决此问题的信息,但没有任何方法行不通。我试过不带引号,用 \ ...没有什么是行不通的(也许我做错了什么)。
所以,假设这是代码:
echo '<td style="
background-image:url(?http://x/y/image.png?);
"
</td>';
? - 使用什么引号
如果你想要引号它应该是这样的,但在这种情况下你并不需要它们。如果您使用单引号打开,那么您必须转义字符串中的所有单引号。
echo '<td style="
background-image:url(\'http://x/y/image.png\');
"
</td>';
据我所知,html邮件中的css非常有限,尤其是定位。但我可能是错的。
背景 url 的 CSS 中的引号是可选的 - 所以只需省略它们。
这是一个类似的问题,其中包含更多信息: 引用 url() 的值真的有必要吗?
\
此外,您可以通过在它们前面放一个来逃避您的报价,例如url(\'http://www.domain.com\')
至于 HTML 邮件问题。最好的标准是坚持使用表格和内联样式 CSS。我会避免任何类型的相对/绝对定位。即使某些电子邮件客户端可能会正确显示它,但并非所有客户端都能正确显示。所以最好尽可能保持一致并避免某些标记。
转义示例代码中的单引号,如下所示:
echo '<td style="
background-image:url(\'http://x/y/image.png\');
"
</td>';
在引号之前使用\
以转义字符串的结尾:
echo '<td style="
background-image:url(\'http://x/y/image.png\');
"
</td>';
引号是可选的:引用 url() 的值真的有必要吗?
但是,您可以逃避它们:
echo "<td style=\"url('example.com')\"";
或者
echo '<td style="url(\'example.com\')";
我认为选择正确的引号不是问题。正如许多其他人已经指出的那样,引号是可选的,或者,您可以简单地转义引号,它仍然有效。
我认为问题在于并非所有邮件客户端都支持background-image
,尤其是 Microsoft Outlook 2007+ 甚至 Outlook.com都不支持。
我建议参考以下资源,了解电子邮件客户端的 CSS 支持级别。
您可能想尝试的一种解决方法是使用background
而不是background-image
.
此外,如果您在构建 HTML 电子邮件时遇到问题,您可能想尝试https://www.mailrox.com/ 。我自己没有尝试过,所以无法评论产品的好坏。
您不需要在 css 中使用引号url()
。
您可以尝试使用以下方法:
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 可能会受到限制,因为邮件客户端的变化比浏览器要大得多,而且有些支持比其他的要多。试一试,一定要检查多个浏览器和电子邮件客户端。
希望这可以帮助。
莱昂。
您应该使用 heredoc 语法。
echo<<<EOT
<td style="background-image:url(?http://x/y/image.png?);"
</td>
EOT;
当您需要使用变量以及需要打印引号时,这非常有用。
确保没有其他内容与 EOT 相关,否则这将不起作用。