public function sanitize($attribute, $rule, $value)
{
if ($rule === null && isset($this->_rules[$attribute])) {
$rule = $this->_rules[$attribute];
}
if ($rule === null && $value === null) {
return null;
}
$filters = $this->_parseRule($rule);
if ($value === null && !isset($filters['default'])) {
$this->_sanitize($attribute, 'required', [], null);
}
if (is_int($value)) {
$value = (string) $value;
} elseif (is_bool($value)) {
$value = $value ? '1' : '0';
} elseif ($value === null) {
$value = '';
}
foreach ($filters as $filter => $parameters) {
$value = $this->_sanitize($attribute, $filter, $parameters, $value);
}
if (is_string($value) && !isset($filters['ignore']) && !isset($filters['xss'])) {
$parameters = [];
$value = $this->_sanitize($attribute, 'xss', $parameters, $value);
}
return $value;
}