negative = $negative; $this->zero = $zero; $this->positive = $positive; } /** * * @param string $integer * @param HTMLPurifier_Config $config * @param HTMLPurifier_Context $context * @return bool|string */ public function validate($integer, $config, $context) { $integer = $this->parseCDATA ( $integer ); if ($integer === '') { return false; } // we could possibly simply typecast it to integer, but there are // certain fringe cases that must not return an integer. // clip leading sign if ($this->negative && $integer [0] === '-') { $digits = substr ( $integer, 1 ); if ($digits === '0') { $integer = '0'; } // rm minus sign for zero } elseif ($this->positive && $integer [0] === '+') { $digits = $integer = substr ( $integer, 1 ); // rm unnecessary plus } else { $digits = $integer; } // test if it's numeric if (! ctype_digit ( $digits )) { return false; } // perform scope tests if (! $this->zero && $integer == 0) { return false; } if (! $this->positive && $integer > 0) { return false; } if (! $this->negative && $integer < 0) { return false; } return $integer; } } // vim: et sw=4 sts=4