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

时间:2011-10-11 14:18:32

标签: php htmlspecialchars

嗨我想知道但也许我错过了关于htmlspecialchars()的问题,为什么这个函数不能代替所有这个html特殊字符 html special chars list

导致例如char %未被替换,因为我可以看到

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;'

关于其他角色呢?没有功能可以全部替换它们吗?

1 个答案:

答案 0 :(得分:4)

The manual告诉您需要知道的一切:

  

某些字符在HTML中具有特殊意义,应该是   由HTML实体表示,如果它们要保留它们的含义。   此函数返回一个字符串,其中包含一些转换;   所做的翻译是对日常网络最有用的翻译   节目。 如果您需要所有HTML字符实体   已翻译,请改用htmlentities()

     

此功能可用于防止用户提供的文本   包含HTML标记,例如在留言板或留言簿中   应用

     

执行的翻译是:

     
      
  • '&'(&符号)变为“&amp;
  •   
  • '"'(双引号)在未设置&quot;时变为“ENT_NOQUOTES”。
  •   
  • '”(单引号)仅在&#039;设置时变为“ENT_QUOTES”。
  •   
  • '<'(小于)变为'&lt;'
  •   
  • '>'(大于)变为'&gt;'
  •