在htmlentities中使用php 5.4的新常量ENT_DISALLOWED

Ave*_*Joe 5 php porting utf-8 html-entities php-5.3

我正在尝试以htmlencoded方式输出一个字符串,该htmlentities()函数始终返回一个空字符串.

我确切地知道为什么会这样做.好吧,我没有运行PHP 5.4我安装了最新的PHP 5.3风格.

问题是我将如何能够对具有无效代码单元序列的字符串进行htmlencode.

根据手册,ENT_SUBSTITUTE是要走的路.但这个常量没有在PHP 5.3.X中定义.

我这样做了:

if (!defined('ENT_SUBSTITUTE')) {
    define('ENT_SUBSTITUTE', 8);
}
Run Code Online (Sandbox Code Playgroud)

仍然没有运气.htmlentities仍然返回空字符串.

我想尝试ENT_DISALLOWED,但我找不到相应的长值.

所以我的问题是两个折叠

  1. 什么是PHP 5.4的常量值ENT_DISALLOWED

  2. 如何确保包含非UTF-8字符的字符串(例如智能引号)可以从中清除?- 不仅是智能引号,还有导致htmlentities()返回空白字符串的任何内容.

Mik*_*ite 2

正如你所说,这些常量被添加5.4.0. 问题是,支持也是新的5.4.0。这意味着你可以传递任何你想要的值,老年人htmlentities不会理解它。

正如最有可能的情况一样,php 变更日志非常具有误导性。