<?php require_once 'HTMLPurifier/AttrDef.php'; require_once 'HTMLPurifier/IDAccumulator.php'; /** * Validates the HTML attribute ID. * @warning Even though this is the id processor, it * will ignore the directive Attr:IDBlacklist, since it will only * go according to the ID accumulator. Since the accumulator is * automatically generated, it will have already absorbed the * blacklist. If you're hacking around, make sure you use load()! */ class HTMLPurifier_AttrDef_ID extends HTMLPurifier_AttrDef { function validate($id, $config, &$context) { $id = trim($id); // trim it first if ($id === '') return false; if (isset($context->id_accumulator->ids[$id])) return false; // we purposely avoid using regex, hopefully this is faster if (ctype_alpha($id)) { $result = true; } else { if (!ctype_alpha(@$id[0])) return false; $trim = trim( // primitive style of regexps, I suppose $id, 'A..Za..z0..9:-._' ); $result = ($trim === ''); } if ($result) $context->id_accumulator->add($id); // if no change was made to the ID, return the result // else, return the new id if stripping whitespace made it // valid, or return false. return $result ? $id : false; } } ?>