private function filterAttr($attrSet)
{
$newSet = array();
for ($i = 0, $count = sizeof($attrSet); $i < $count; ++$i) {
if (!$attrSet[$i]) {
continue;
}
$attrSubSet = array_map('trim', explode('=', trim($attrSet[$i]), 2));
$attrSubSet[0] = strtolower($attrSubSet[0]);
if (!preg_match('/[a-z]+/i', $attrSubSet[0]) || in_array($attrSubSet[0], $this->disabledattributes) || preg_match('/^on/i', $attrSubSet[0])) {
continue;
}
if (!empty($attrSubSet[1])) {
$attrSubSet[1] = preg_replace('/[ ]+/', ' ', $attrSubSet[1]);
$attrSubSet[1] = preg_replace("/^\"(.*)\"\$/", "\\1", $attrSubSet[1]);
$attrSubSet[1] = preg_replace("/^\\'(.*)\\'\$/", "\\1", $attrSubSet[1]);
$attrSubSet[1] = str_replace(array('"', '"'), "'", $attrSubSet[1]);
if (preg_match("/(expression|javascript|behaviour|vbscript|mocha|livescript)(\\:*)/", $attrSubSet[1])) {
continue;
}
if (!empty($this->disablecomannds) and preg_match('#(' . implode('|', $this->disablecomannds) . ')(\\s*)\\((.*?)\\)#si', $attrSubSet[1])) {
continue;
}
$value = $this->unhtmlentities($attrSubSet[1]);
$search = array('javascript' => '/j\\s*a\\s*v\\s*a\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t/si', 'vbscript' => '/v\\s*b\\s*s\\s*c\\s*r\\s*i\\s*p\\s*t/si', 'script' => '/s\\s*c\\s*r\\s*i\\s*p\\s*t/si', 'applet' => '/a\\s*p\\s*p\\s*l\\s*e\\s*t/si', 'alert' => '/a\\s*l\\s*e\\s*r\\s*t/si', 'document' => '/d\\s*o\\s*c\\s*u\\s*m\\s*e\\s*n\\s*t/si', 'write' => '/w\\s*r\\s*i\\s*t\\s*e/si', 'cookie' => '/c\\s*o\\s*o\\s*k\\s*i\\s*e/si', 'window' => '/w\\s*i\\s*n\\s*d\\s*o\\s*w/si');
$value = preg_replace(array_values($search), array_keys($search), $value);
if (preg_match("/(expression|javascript|behaviour|vbscript|mocha|livescript)(\\:*)/", $value)) {
continue;
}
if (!empty($this->disablecomannds) and preg_match('#(' . implode('|', $this->disablecomannds) . ')(\\s*)\\((.*?)\\)#si', $value)) {
continue;
}
$attrSubSet[1] = preg_replace_callback('/\\#([0-9ABCDEFabcdef]{3,6})[\\;]*/', array($this, 'color_hex2rgb_callback'), $attrSubSet[1]);
} elseif ($attrSubSet[1] !== '0') {
$attrSubSet[1] = $attrSubSet[0];
}
$newSet[] = $attrSubSet[0] . '=[@{' . $attrSubSet[1] . '}@]';
}
return $newSet;
}