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