attrValidator = new HTMLPurifier_AttrValidator (); $this->config = $config; $this->context = $context; return parent::prepare ( $config, $context ); } /** * * @param HTMLPurifier_Token $token */ public function handleElement(&$token) { if ($token->name !== 'span' || ! $token instanceof HTMLPurifier_Token_Start) { return; } // We need to validate the attributes now since this doesn't normally // happen until after MakeWellFormed. If all the attributes are removed // the span needs to be removed too. $this->attrValidator->validateToken ( $token, $this->config, $this->context ); $token->armor ['ValidateAttributes'] = true; if (! empty ( $token->attr )) { return; } $nesting = 0; while ( $this->forwardUntilEndToken ( $i, $current, $nesting ) ) { } if ($current instanceof HTMLPurifier_Token_End && $current->name === 'span') { // Mark closing span tag for deletion $current->markForDeletion = true; // Delete open span tag $token = false; } } /** * * @param HTMLPurifier_Token $token */ public function handleEnd(&$token) { if ($token->markForDeletion) { $token = false; } } } // vim: et sw=4 sts=4