1<?php
2
3/**
4 * Validates based on {ident} CSS grammar production
5 */
6class HTMLPurifier_AttrDef_CSS_Ident extends HTMLPurifier_AttrDef
7{
8
9    /**
10     * @param string $string
11     * @param HTMLPurifier_Config $config
12     * @param HTMLPurifier_Context $context
13     * @return bool|string
14     */
15    public function validate($string, $config, $context)
16    {
17        $string = trim($string);
18
19        // early abort: '' and '0' (strings that convert to false) are invalid
20        if (!$string) {
21            return false;
22        }
23
24        $pattern = '/^(-?[A-Za-z_][A-Za-z_\-0-9]*)$/';
25        if (!preg_match($pattern, $string)) {
26            return false;
27        }
28        return $string;
29    }
30}
31
32// vim: et sw=4 sts=4
33