Habari\InputFilter::check_attr_value PHP Метод

check_attr_value() приватный статический Метод

private static check_attr_value ( $k, $v, $type )
    private static function check_attr_value($k, $v, $type)
    {
        if (is_array($type)) {
            // array of allowed values, exact matches only
            return in_array($v, $type, true);
        } else {
            // data type
            switch ($type) {
                case 'uri':
                    // RfC 2396 <http://www.ietf.org/rfc/rfc2396.txt>
                    $bits = self::parse_url($v);
                    return $bits['is_relative'] || in_array($bits['scheme'], self::$whitelist_protocols);
                    break;
                case 'language-code':
                    // RfC 1766 <http://www.ietf.org/rfc/rfc1766.txt>
                    //    Language-Tag = Primary-tag *( "-" Subtag )
                    //    Primary-tag = 1*8ALPHA
                    //    Subtag = 1*8ALPHA
                    return preg_match('/^[a-zA-Z]{1,8}(?:-[a-zA-Z]{1,8})*$/i', $v);
                    break;
                case 'text':
                    // XXX is this sufficient?
                    return is_string($v);
                    break;
                case 'datetime':
                    // <http://www.w3.org/TR/1998/NOTE-datetime-19980827>
                    // <http://www.w3.org/TR/html4/types.html#h-6.11>
                    //    YYYY-MM-DDThh:mm:ssTZD
                    return preg_match('/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9](?:Z|[\\+-][0-2][0-9]:[0-5][0-9])$/', $v);
                    break;
                default:
                    Error::raise(_t('Unknown attribute type "%s" in %s', array($type, __CLASS__)));
                    return false;
            }
        }
    }