【发布时间】:2013-09-11 17:42:16
【问题描述】:
我们有这样的代码:
echo '<input type="text" name="myInput" value="Double " Quotes" />';
绝对不行,因为Double 之后的引号结束了值。
我们可以通过使用单引号而不是双引号来修复它。
echo '<input type="text" name="myInput" value=\'Double " Quotes\' />';
现在我想同时使用单引号和双引号作为值。它应该输出She said:"I don't know."
有没有办法不使用使用 HTML 实体(如 &quot;)、htmlentities() 或类似函数来修复它?
【问题讨论】:
-
你为什么不想使用
htmlentities()(尽管htmlspecialchars()在你的情况下就足够了)? -
HTML 实体是在 HTML 属性 context 中放置保留字符的正确 方式。仅仅因为它经常在没有的情况下工作并不意味着它符合标准。
-
您也可以使用数字字符引用而不是实体引用。
-
@Gumbo 用于额外的混淆:)
-
您将 HTML 字符转义与 PHP 字符转义混合使用。两者都是独立的。但是如果你用 PHP 输出 HTML,你首先需要知道如何编写 HTML,然后你需要知道如何将它翻译成 PHP。关于哪一部分是您的问题?,如果您分享它,应该很容易给您一个有见地(至少对您而言)的答案。