【问题标题】:Is it safe to concatenate a double quoted to a single quoted string?将双引号连接到单引号字符串是否安全?
【发布时间】:2015-09-19 04:19:44
【问题描述】:

在执行以下操作时我应该注意哪些问题:

$table_html = '  <td id="unescaped-double-quotes-yay">Some stuff</td>' . "\n";

我不喜欢用 HTML 转义双引号,我不能忍受在 HTML 中使用单引号,我的解决方案就是上面的。我会遇到这种做法的任何问题吗?

【问题讨论】:

  • 字符串值是一个字符串值:它与它来自哪个表达式(包括字符串文字表达式)没有区别。我个人认为这看起来更难看.. 并会推荐一个合适的模板库或(更多 DIY)heredocs / nowdocs.
  • 是的,你很精明;但是,我的问题不是“什么是字符串值?”。
  • 如果它是纯文本,就像你在你的例子中那样,那么没有。
  • 至于丑陋,我不同意。这真的取决于应用程序。
  • @JamesHuckabone 这与串联操作的“安全性”无关,而是与编码风格有关。 个人认为它看起来像便便,但我也会对任何大量的字符串连接说同样的话。模板、now/heredocs 和格式化(插值/sprintf)字符串可以使代码(可以说受偏好影响)更容易理解,然后尝试在心理上排列 which-quote-is-for-which - 更不用说哪个 HTML 结束了标签属于哪个起始标签。

标签: php html quotes


【解决方案1】:

您必须转义来自 DB 或来自用户的字符串,因为如果该字符串中存在意外类型的引号,它们很容易破坏您的连接(更不用说您必须清除来自用户的任何内容以降低安全性)。 除此之外,您可以以任何您喜欢的方式连接字符串。不过,如果您设法以相同的方式始终如一地使用它们,生活总是会更轻松。

【讨论】:

  • 很抱歉让您感到困惑,非常感谢您的意见!
【解决方案2】:

我在客户网站上做过很多次(后来找到了更好的选择),你 100% 没问题。

【讨论】:

  • 感谢您的支持。
  • 没问题,忽略反对票人们需要帮助和安慰,我们都经历过。
  • 我真的不在乎反对票。虽然我确实幻想吃掉他们的灵魂。
【解决方案3】:

您是否知道以下表示:

$table_html = <<<HTML
 <td id="unescaped-double-quotes-yay">
   Some stuff, and i can use normal newlines here
  </td>
HTML;

叫做“heredoc”,一定要记住,最后的字符串必须和开头的字符串等价,而且必须是行上only的东西(没有空格甚至是cmets是允许的)。

您还必须用换行符终止最后一行,即使它是文件中的最后一行。

要了解更多信息,请点击here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多