【问题标题】:Problems doing simple echo [duplicate]做简单回声的问题[重复]
【发布时间】:2026-01-07 14:10:01
【问题描述】:

好吧,我正在尝试回显一些代码行,但它同时使用了""''。 据我所知,如果您使用"" 启动回显,每次使用"" 时都会停止回显。

如何打印这行代码而不破坏它? 这是我目前拥有的:

echo "<a class='lightbox' href='img/projects/generic/project-16.jpg' data-plugin-options='{'type':'image', 'mainClass': 'mfp-with-zoom', 'zoom': {'enabled': true, 'duration': 300}}'>";

data-plugin-options='{'type':'image', 'mainClass': 'mfp-with-zoom', 'zoom': {'enabled': true, 'duration': 300}}' 是给我带来麻烦的那个,因为我不能使用“”,也不能使用 '',因为一个会破坏回声,另一个会破坏标签。

希望你们能帮助我理解和解决这个小问题,提前非常感谢!

【问题讨论】:

  • 在 PHP 字符串上下文中转义引号是用反斜杠 \" 完成的。对于 HTML 上下文,您应该应用 htmlspecialchars,甚至可能使用 json_encode 而不是文字。

标签: php html plugins


【解决方案1】:

你尝试过这样的事情吗?

echo "<a class=\"lightbox\" href=\"img/projects/generic/project-16.jpg\" data-plugin-options=\"{'type':'image', 'mainClass': 'mfp-with-zoom', 'zoom': {'enabled': true, 'duration': 300}}\">"; 

用反斜杠 (\") 在双引号字符串中添加双引号前缀会将其插入字符串本身并防止它停止字符串块。

编辑:考虑到@Barmar 的评论,将 data-plugin-options 的数据保持为有效 JSON 应该更像这样,因此将其括在单引号中:

echo "<a class=\"lightbox\" href=\"img/projects/generic/project-16.jpg\" data-plugin-options='{\"type\":\"image\", \"mainClass\": \"mfp-with-zoom\", \"zoom\": {\"enabled\": true, \"duration\": 300}}'>";

所以总结一下,PHP不支持用""转义双引号,需要改用\"。 (类比 \' 必须用于单引号字符串)

【讨论】:

  • “试试这个”并不是一个好的答案。你应该解释如何为什么这可以解决他们的问题。我推荐阅读,“How do I write a good answer?"
  • data-plugin-options的值需要是JSON,它只允许在字符串两边加上双引号。
  • @JohnConde 感谢您的评论,我已经编辑了我的答案,添加了一个简短的解释。
  • 谢谢大家!我不仅能够解决我的问题,而且我找到了它的根源并理解了它!非常感谢大家!
【解决方案2】:

data-plugin-options 中的引号必须是双引号,因为它被解析为 JSON。

您可以在以" 分隔的字符串中转义",方法是在它前面加上\

echo "<a class='lightbox' href='img/projects/generic/project-16.jpg' data-plugin-options='{\"type\":\"image\", \"mainClass\": \"mfp-with-zoom\", \"zoom\": {\"enabled\": true, \"duration\": 300}}'>";

【讨论】:

  • 谢谢!我以前在打印 时也这样做,完全忘记了!