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

Joh*_*lia 12 php htmlspecialchars

我正在尝试创建一个接受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;
}
Run Code Online (Sandbox Code Playgroud)
  1. 如果我改变:ENT_QUOTES | ENT_HTML5进入:ENT_QUOTES,我会得到一个不同的错误

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

UPDATE

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

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

Emi*_*röm 20

根据手册,在PHP 5.4版中添加了ENT_HTML5,ENT_HTML401和其他一些内容.对于早期版本,这些常量是未定义的,PHP将自动假设未定义的常量编程"滑动"并将它们转换为字符串.