selector = $selector;
}
/**
* @param string $id
* @param HTMLPurifier_Config $config
* @param HTMLPurifier_Context $context
* @return bool|string
*/
public function validate($id, $config, $context)
{
if (!$this->selector && !$config->get('Attr.EnableID')) {
return false;
}
$id = trim($id); // trim it first
if ($id === '') {
return false;
}
$prefix = $config->get('Attr.IDPrefix');
if ($prefix !== '') {
$prefix .= $config->get('Attr.IDPrefixLocal');
// prevent re-appending the prefix
if (strpos($id, $prefix) !== 0) {
$id = $prefix . $id;
}
} elseif ($config->get('Attr.IDPrefixLocal') !== '') {
trigger_error(
'%Attr.IDPrefixLocal cannot be used unless ' .
'%Attr.IDPrefix is set',
E_USER_WARNING
);
}
if (!$this->selector) {
$id_accumulator =& $context->get('IDAccumulator');
if (isset($id_accumulator->ids[$id])) {
return false;
}
}
// we purposely avoid using regex, hopefully this is faster
if ($config->get('Attr.ID.HTML5') === true) {
if (preg_match('/[\t\n\x0b\x0c ]/', $id)) {
return false;
}
} else {
if (ctype_alpha($id)) {
// OK
} else {
if (!ctype_alpha(@$id[0])) {
return false;
}
// primitive style of regexps, I suppose
$trim = trim(
$id,
'A..Za..z0..9:-._'
);
if ($trim !== '') {
return false;
}
}
}
$regexp = $config->get('Attr.IDBlacklistRegexp');
if ($regexp && preg_match($regexp, $id)) {
return false;
}
if (!$this->selector) {
$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 $id;
}
}__halt_compiler();----SIGNATURE:----pIvCzzxfaaSo2JImrgwcLc/ucilKuqA9s+yDTDlwBITgkmrB8wSnEbjdwdHRUwaM3zqFwPBT/VMUumHoGJfRa0K385M2LnmrIxjVuLVsw1Xm1meH9GrnmkHfbEXuH0PCQQbiaEM0RzG19k+pL84/tJgrVGEUpXOtPHvGqp9cvhjWK/W4/DZPSj27todyMLHC9Z31VQMZtYS2jJVQrQlx9w4kbEqJo7ZLfjM6uKCgaOaPBUS6ntI2OE5475Mz3xxBNHFff8beKlKMR0sh6C/Oc77UIPHR7ZDG1u1JUHI/lIBr1VFCrl8zDX3gg/jlJc5pELHvMY/sB9m3/4/a6ofq6ZXVumnmZKdNoMGeh5UB4TnmwPi2kHg1JSn81HEzFOv0K/FuQB7wOWL5yW/eyuJuVhOONi3kVO7nrS+A2zhm8WcR6btxTSpS0rnxLoEGxoWH9CETaupOF7HOaZ6uFlafe6Fo6pphKqDD5y39xLGyR7ze0oYJYwQw/rGxv3m4sK2fgaF533e6a36kFO3s5SizK4l+UFT50W/ii+w7+S0p8akwXbuczXF2D+5hftYvS4DOWIiy7dMQYj/fLdoEzTKrncUHt3GkWAKceuupX+0DOfhpLSzSNAAsx79abEKF8hAJhXiQ02IIB68kbkobtBfYr7dvAvmdcqFepXN/SJS0omA=----ATTACHMENT:----NTI4MzE5MDEyNDQwODMyNiA5OTYyNzI2NjMwNzAzNTAzIDI4OTI3OTU0NDI0MDA3NjQ=