12

我正在尝试创建一个接受 htmlspecialchars 参数的简单方法。虽然我收到 PHP 通知:

使用未定义的常量 ENT_HTML5 - 假定为“ENT_HTML5”

  1. 有什么想法可能导致这种情况吗?

/**

 * Encode string.
 *
 * @param array/string $value
 * @param string $param
 * @return string
 */
protected function escape($mixed, $params) {

    $defaults = array('flags' => ENT_QUOTES | ENT_HTML5, 'charset' => 'UTF-8');
    $params = array_merge($defaults, $params);

    if (is_array($mixed)) {
        foreach($mixed as $key => $value) {
            $mixed[$key] = $this->escape($value, $params['flags'], $params['charset']);
        }
    } elseif (is_string($mixed)) {
        $mixed = htmlspecialchars($mixed, $params['flags'], $params['charset']);
    }

    return $mixed;
}
  1. 如果我将: 更改ENT_QUOTES | ENT_HTML5为: ENT_QUOTES,我会得到一个不同的错误

警告:htmlspecialchars() 期望参数 2 很长,给定字符串

更新

我使用的是 PHP 5.3,所以这就是 HTML5 错误的原因。如果我ENT_QUOTES | ENT_HTML5改为ENT_COMPAT | ENT_HTML401我得到同样的错误:

注意:使用未定义的常量 ENT_HTML401 - 假定为“ENT_HTML401”

4

1 回答 1

20

ENT_HTML5、ENT_HTML401 和其他一些是根据手册在 PHP 5.4 版中添加的。对于早期版本,这些常量是未定义的,PHP 将自动假定未定义的常量正在编程“单据”并将它们转换为字符串。

于 2012-07-17T13:15:16.527 回答