我正在尝试创建一个接受htmlspecialchars参数的简单方法。尽管我收到了PHP的通知:
/**
* 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
,则会收到不同的错误更新
我正在使用PHP 5.3,所以这是HTML5错误的原因。如果我将
ENT_QUOTES | ENT_HTML5
更改为ENT_COMPAT | ENT_HTML401
,则会出现相同的错误:最佳答案
ENT_HTML5,ENT_HTML401和其他一些版本已在PHP 5.4 according to the manual中添加。对于较早的版本,这些常量是未定义的,PHP会自动假定未定义的常量正在编写“ list ”,并将其转换为字符串。