Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
/**
4
 * Validates an IPv4 address
5
 * @author Feyd @ forums.devnetwork.net (public domain)
6
 */
7
class HTMLPurifier_AttrDef_URI_IPv4 extends HTMLPurifier_AttrDef
8
{
9
 
10
    /**
11
     * IPv4 regex, protected so that IPv6 can reuse it.
12
     * @type string
13
     */
14
    protected $ip4;
15
 
16
    /**
17
     * @param string $aIP
18
     * @param HTMLPurifier_Config $config
19
     * @param HTMLPurifier_Context $context
20
     * @return bool|string
21
     */
22
    public function validate($aIP, $config, $context)
23
    {
24
        if (!$this->ip4) {
25
            $this->_loadRegex();
26
        }
27
 
28
        if (preg_match('#^' . $this->ip4 . '$#s', $aIP)) {
29
            return $aIP;
30
        }
31
        return false;
32
    }
33
 
34
    /**
35
     * Lazy load function to prevent regex from being stuffed in
36
     * cache.
37
     */
38
    protected function _loadRegex()
39
    {
40
        $oct = '(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]|[0-9])'; // 0-255
41
        $this->ip4 = "(?:{$oct}\\.{$oct}\\.{$oct}\\.{$oct})";
42
    }
43
}
44
 
45
// vim: et sw=4 sts=4