| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | <?php/** * Validates an integer representation of pixels according to the HTML spec. */class HTMLPurifier_AttrDef_HTML_Pixels extends HTMLPurifier_AttrDef{    /**     * @type int     */    protected $max;    /**     * @param int $max     */    public function __construct($max = null)    {        $this->max = $max;    }    /**     * @param string $string     * @param HTMLPurifier_Config $config     * @param HTMLPurifier_Context $context     * @return bool|string     */    public function validate($string, $config, $context)    {        $string = trim($string);        if ($string === '0') {            return $string;        }        if ($string === '') {            return false;        }        $length = strlen($string);        if (substr($string, $length - 2) == 'px') {            $string = substr($string, 0, $length - 2);        }        if (!is_numeric($string)) {            return false;        }        $int = (int)$string;        if ($int < 0) {            return '0';        }        // upper-bound value, extremely high values can        // crash operating systems, see <http://ha.ckers.org/imagecrash.html>        // WARNING, above link WILL crash you if you're using Windows        if ($this->max !== null && $int > $this->max) {            return (string)$this->max;        }        return (string)$int;    }    /**     * @param string $string     * @return HTMLPurifier_AttrDef     */    public function make($string)    {        if ($string === '') {            $max = null;        } else {            $max = (int)$string;        }        $class = get_class($this);        return new $class($max);    }}// vim: et sw=4 sts=4
 |