Примечание: использование константы 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'
Ответы
Ответ 1
ENT_HTML5, ENT_HTML401 и некоторые другие были добавлены в PHP версии 5.4 в соответствии с руководством. Для более ранних версий эти константы undefined, и PHP автоматически предполагает, что константы undefined программируют "промахи" и преобразуют их в строки.