【问题标题】:Is it possible to use more quotes than ' and "? [duplicate]是否可以使用比'和“更多的引号?[重复]
【发布时间】:2019-10-11 10:50:06
【问题描述】:

我想要两层以上的引号。

这是使用 document.write 和 php 的 echo 函数的错误消息。

<img src="#" onerror="javascript:document.write('<?php echo("An error has occurred.") ?>')"

我希望它将文档替换为“发生错误”,但它没有。

【问题讨论】:

  • 在现代 JavaScript 中,您可以使用 `,但您确实犯了这个错误。您应该转义任何引号,以便目标语言可以安全地处理字符串。
  • 什么语言?!在 PHP 中,您有单引号、双引号、heredoc 和 nowdoc。 php.net/manual/en/language.types.string.php
  • 查看源代码或查看 F12 开发人员工具网络选项卡以查看服务器发送的内容。我希望 PHP 代码被 echo 结果替换,并且您的页面脚本还有其他问题。如果您需要更多帮助,请编辑您的问题,使其成为minimal reproducible example
  • PHP 是在服务器端处理的,但是这个 onerror 处理程序将在客户端被调用。如果我错了,请纠正我,但这不会也将&lt;?php ... ?&gt;标签写入本地文档吗?
  • @Romen,不,php 是与 html 的结果内联处理的。在这种情况下,它也会评估 .

标签: javascript php quotes quoting


【解决方案1】:

您不应该将 javascript: 作为 onerror 事件的一部分。

使用 ENT_QUOTE 标志将您的语句包装在 htmlentities 中,以处理嵌入的 html 并将引号转换为适当的转义值。

<img src="#" onerror="document.write('<?= htmlentities("An error has occurred.", ENT_QUOTE); ?>')">

除非您要回显 php 方法或变量,否则甚至没有必要使用 php。

<img src="#" onerror="document.write('An error has occurred')">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 2020-07-22
    • 1970-01-01
    相关资源
    最近更新 更多