注意:使用未定义的常量ENT_HTML5 - 假设为'ENT_HTML5'

时间:2012-07-17 13:13:11

标签: php htmlspecialchars

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

  

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

  1. 任何可能导致这种情况的想法?
  2. / **

     * 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,我会收到不同的错误
    2.   

      警告:htmlspecialchars()期望参数2为long,string   给定

      更新

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

        

      注意:使用未定义的常量ENT_HTML401 - 假设为'ENT_HTML401'

1 个答案:

答案 0 :(得分:20)

ENT_HTML5,ENT_HTML401以及PHP 5.4版according to the manual中添加了一些其他内容。对于早期版本,这些常量是未定义的,PHP将自动假设未定义的常量编程“滑动”并将它们转换为字符串。