首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用htmlspecialchars转义双引号时,为什么ENT_QUOTES在使用ENT_SUBSTITUTE时是必需的?

当使用htmlspecialchars转义双引号时,为什么ENT_QUOTES在使用ENT_SUBSTITUTE时是必需的?
EN

Stack Overflow用户
提问于 2018-07-19 14:30:49
回答 2查看 419关注 0票数 0

在PHP7.0.3版本中使用htmlspecialchars时,我注意到了以下行为:

代码语言:javascript
复制
php > echo htmlspecialchars('"');
"
php > echo htmlspecialchars('"', ENT_SUBSTITUTE);
"
php > echo htmlspecialchars('"', ENT_QUOTES | ENT_SUBSTITUTE);
"

我们想转义双引号,同时也使用ENT_SUBSTITUTE标志.注意,双引号在仅使用ENT_SUBSTITUTE标志时不会转义。

如果我们想转义双引号,ENT_QUOTES标志是否与ENT_SUBSTITUTE一起使用?为什么会这样呢?

htmlspecialchars文档没有说在使用ENT_SUBSTITUTE时需要ENT_QUOTES。事实上,它似乎表明相反的双引号应该总是被转义,除非ENT_NOQUOTES标志存在。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-19 14:35:12

ENT_COMPAT | ENT_HTML401$flags参数的默认值。当您传递ENT_SUBSTITUTE 而不是时,您将重写默认设置。现在它不再应用ENT_COMPAT了,它负责引号。如果要将ENT_SUBSTITUTE添加到默认参数,则应正确地编写:

代码语言:javascript
复制
htmlspecialchars('"', ENT_COMPAT | ENT_HTML401 | ENT_SUBSTITUTE)
票数 2
EN

Stack Overflow用户

发布于 2018-07-19 14:35:05

当您显式地将标志传递给htmlspecialchars时,替换默认标志

htmlspecialchars($data)等价于htmlspecialchars($data, ENT_COMPAT | ENT_HTML401)

htmlspecialchars($data, ENT_SUBSTITUTE)将规则从ENT_COMPATENT_HTML401丢弃到--just--使用来自ENT_SUBSTITUTE的规则。

( ENT_COMPAT导致双引号被转换)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51425302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档