00001 <?php
00002
00010 class HTMLPurifier_AttrDef_Integer extends HTMLPurifier_AttrDef
00011 {
00012
00016 protected $negative = true;
00017
00021 protected $zero = true;
00022
00026 protected $positive = true;
00027
00033 public function __construct(
00034 $negative = true, $zero = true, $positive = true
00035 ) {
00036 $this->negative = $negative;
00037 $this->zero = $zero;
00038 $this->positive = $positive;
00039 }
00040
00041 public function validate($integer, $config, $context) {
00042
00043 $integer = $this->parseCDATA($integer);
00044 if ($integer === '') return false;
00045
00046
00047
00048
00049
00050 if ( $this->negative && $integer[0] === '-' ) {
00051 $digits = substr($integer, 1);
00052 if ($digits === '0') $integer = '0';
00053 } elseif( $this->positive && $integer[0] === '+' ) {
00054 $digits = $integer = substr($integer, 1);
00055 } else {
00056 $digits = $integer;
00057 }
00058
00059
00060 if (!ctype_digit($digits)) return false;
00061
00062
00063 if (!$this->zero && $integer == 0) return false;
00064 if (!$this->positive && $integer > 0) return false;
00065 if (!$this->negative && $integer < 0) return false;
00066
00067 return $integer;
00068
00069 }
00070
00071 }
00072