diff --git a/library/HTMLPurifier/AttrDef/CSS.php b/library/HTMLPurifier/AttrDef/CSS.php index 9a0f60ff..2ac18993 100644 --- a/library/HTMLPurifier/AttrDef/CSS.php +++ b/library/HTMLPurifier/AttrDef/CSS.php @@ -14,7 +14,7 @@ class HTMLPurifier_AttrDef_CSS // This is because semicolon rarely appears in escaped form $declarations = explode(';', $css); - $new_declarations = ''; + $propvalues = array(); foreach ($declarations as $declaration) { if (!$declaration) continue; @@ -23,7 +23,12 @@ class HTMLPurifier_AttrDef_CSS if (!isset($definition->info[$property])) continue; $result = $definition->info[$property]->validate($value,$config,$context); if ($result === false) continue; - $new_declarations .= "$property:$result;"; + $propvalues[$property] = $result; + } + + $new_declarations = ''; + foreach ($propvalues as $prop => $value) { + $new_declarations .= "$prop:$value;"; } return $new_declarations ? $new_declarations : false; diff --git a/tests/HTMLPurifier/AttrDef/CSSTest.php b/tests/HTMLPurifier/AttrDef/CSSTest.php index 58272a3b..ae1694d9 100644 --- a/tests/HTMLPurifier/AttrDef/CSSTest.php +++ b/tests/HTMLPurifier/AttrDef/CSSTest.php @@ -10,6 +10,7 @@ class HTMLPurifier_AttrDef_CSSTest extends HTMLPurifier_AttrDefHarness $this->def = new HTMLPurifier_AttrDef_CSS(); $this->assertDef('text-align:right;'); + $this->assertDef('text-align:right;text-align:left;', 'text-align:left;'); }