【问题标题】:PHP and CSS quotes issuePHP 和 CSS 引号问题
【发布时间】:2012-10-28 17:35:13
【问题描述】:

喂,

我遇到了引号问题。我正在编写一份 html 邮件通讯,这是一场噩梦。我已经阅读了很多有关如何解决此问题的信息,但没有什么是行不通的。我试过不带引号,用 \ ...什么都行不通(也许我做错了什么)。

所以,假设这是代码:

echo '<td style="
    background-image:url(?http://x/y/image.png?);
                "
      </td>';

? - 使用什么引号

【问题讨论】:

  • 我不确定这些 CSS 功能是否在电子邮件客户端中可用。
  • 我已经删除了你的第二个问题,因为它只是远程相关的。如果您想回答另一个问题,请提出另一个问题(尽管我应该补充一点,该问题也没有显示您的研究证据,这是需要的)
  • I'm working on a html mail newsletter and it's a nightmare.看看phpmailer

标签: php html css


【解决方案1】:

你应该使用heredoc语法。

echo<<<EOT
    <td style="background-image:url(?http://x/y/image.png?);"
      </td>
EOT;

这在您需要使用变量以及需要打印引号时非常有用。

确保没有其他内容与 EOT 相关,否则将无法正常工作。

【讨论】:

    【解决方案2】:

    我认为选择正确的引号不是问题。正如许多其他人已经指出的那样,引号是可选的,或者,您可以简单地转义引号,它仍然有效。

    我认为问题在于并非所有邮件客户端都支持background-image,尤其是 Microsoft Outlook 2007+,甚至 Outlook.com支持它。

    我建议参考以下资源,了解电子邮件客户端的 CSS 支持级别。

    您可能想尝试的一种解决方法是使用background 而不是background-image

    此外,如果您在构建 HTML 电子邮件时遇到问题,您可能想尝试https://www.mailrox.com/。虽然我自己没有尝试过,所以无法评论产品有多好。

    【讨论】:

      【解决方案3】:

      您可以尝试使用以下方法:

      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 可能会受到限制,因为邮件客户端的变化比浏览器要大得多,而且有些支持比其他的要多。试一试,一定要检查多个浏览器和电子邮件客户端。

      希望这会有所帮助。

      莱昂。

      【讨论】:

        【解决方案4】:

        引号是可选的:Is quoting the value of url() really necessary?

        但是,您可以逃避它们:

        echo "<td style=\"url('example.com')\"";
        

        echo '<td style="url(\'example.com\')";
        

        【讨论】:

          【解决方案5】:

          在引号前使用\ 来转义字符串的结尾:

          echo '<td style="
              background-image:url(\'http://x/y/image.png\');
                          "
                </td>';
          

          【讨论】:

            【解决方案6】:

            转义示例代码中的单引号,如下所示:

            echo '<td style="
                background-image:url(\'http://x/y/image.png\');
                            "
                  </td>';
            

            【讨论】:

              【解决方案7】:

              如果你想要引号它应该是这样的,但在这种情况下你并不需要它们。 如果您使用单引号打开,那么您必须转义字符串中的所有单引号。

              echo '<td style="
                  background-image:url(\'http://x/y/image.png\');
                              "
                    </td>';
              

              据我所知,html邮件中的css非常有限,尤其是定位。但我可能是错的。

              【讨论】:

                【解决方案8】:

                css url() 中不需要引号。

                【讨论】:

                  【解决方案9】:

                  背景网址的 CSS 中的引号是可选的 - 所以只需省略它们。

                  这是一个类似的问题,其中包含更多信息: Is quoting the value of url() really necessary?

                  此外,您可以通过在引号前面加上 \ 来转义引号,例如url(\'http://www.domain.com\')

                  关于 HTML 邮件问题。最好的标准是坚持使用表格和内联样式 CSS。我会避免任何类型的相对/绝对定位。即使某些电子邮件客户端可能会正确显示它,但并非所有客户端都能正确显示。所以最好尽可能保持一致并避免某些标记。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2011-05-17
                    • 2013-12-25
                    • 1970-01-01
                    • 2023-03-08
                    • 2011-07-11
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-07-29
                    相关资源
                    最近更新 更多