Подтвердить что ты не робот

Примечание: использование константы undefined ENT_HTML5 - предполагается 'ENT_HTML5'

Я пытаюсь создать простой метод, который принимает параметры для htmlspecialchars. Хотя я получаю уведомление PHP:

Использование константы undefined ENT_HTML5 - предполагается 'ENT_HTML5'

  • Любые идеи, что может быть причиной этого?

/**

 * 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;
}
  • Если я изменяю: ENT_QUOTES | ENT_HTML5 на: ENT_QUOTES, я получаю другую ошибку

Предупреждение: htmlspecialchars() ожидает, что параметр 2 длинный, строка дано

UPDATE

Я использую PHP 5.3, поэтому это причина ошибки HTML5. Если я изменяю ENT_QUOTES | ENT_HTML5 на ENT_COMPAT | ENT_HTML401, я получаю такую ​​же ошибку:

Примечание: использование константы undefined ENT_HTML401 - предполагается 'ENT_HTML401'

4b9b3361

Ответ 1

ENT_HTML5, ENT_HTML401 и некоторые другие были добавлены в PHP версии 5.4 в соответствии с руководством. Для более ранних версий эти константы undefined, и PHP автоматически предполагает, что константы undefined программируют "промахи" и преобразуют их в строки.