Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php htmlspecialchars()为什么对某些字符不起作用_Php_Htmlspecialchars - Fatal编程技术网

Php htmlspecialchars()为什么对某些字符不起作用

Php htmlspecialchars()为什么对某些字符不起作用,php,htmlspecialchars,Php,Htmlspecialchars,您好,我想知道,但是可能我错过了一些关于htmlspecialchars()的内容,为什么这个函数不能替换所有这些html特殊字符 原因例如,如我所见,字符%未被替换 php手册介绍了: '&' (ampersand) becomes '&' '"' (double quote) becomes '"' when ENT_NOQUOTES is not set. "'" (single quote) becomes '&#03

您好,我想知道,但是可能我错过了一些关于
htmlspecialchars()
的内容,为什么这个函数不能替换所有这些html特殊字符

原因例如,如我所见,字符
%
未被替换

php手册介绍了:

 '&' (ampersand) becomes '&'
    '"' (double quote) becomes '"' when ENT_NOQUOTES is not set.
    "'" (single quote) becomes ''' only when ENT_QUOTES is set.
    '<' (less than) becomes '&lt;'
    '>' (greater than) becomes '&gt;'
“&”(与号)变为“&;”
未设置ENT_NOQUOTES时,“”(双引号)变为“”。
“'”(单引号)变为“';”仅当设置了ENT_引号时。
''(大于)变成''
那么其他角色呢?没有函数可以全部替换它们?

告诉您需要知道的一切:

某些字符在HTML中具有特殊意义,应 如果要保留其含义,则由HTML实体表示。 此函数返回一个字符串,其中包含一些转换; 这些翻译对日常网络最有用 编程如果您要求所有HTML字符实体都是 翻译后,请使用
htmlentities()

此函数用于防止用户提供的文本被删除 包含HTML标记的,如在留言板或留言簿中 应用程序

执行的翻译是:

  • &
    ”(与号)变为“
    &'
  • 未设置
    ENT\u NOQUOTES
    时,“
    ”(双引号)变为“
  • ”(单引号)变为“
    ''仅当设置了
    ENT\u QUOTES
  • ”(大于)变为“

阅读整个手册页。这个问题非常懒惰。这是帮助防止跨站点脚本攻击的实体子集。请注意,它们中的大多数是用于构建html的字符,即对html解析器/解释器具有特殊意义的字符。这是因为%chars等不应被此函数替换。@Ispuk:不,一点也不。语言新手非常受欢迎。我们只需要基本的努力和阅读理解技能;您演示了您一直在使用手册,但您没有阅读所有手册。编程能力与此无关@重新激活,因此%chars应替换为substr_replace()之类的内容?