Пример #1
0
 protected function parse()
 {
     /*
     $exp_ip			= "(%1\$s)\\.(%1\$s)\\.(%1\$s)\\.(%1\$s)";
     $exp_0_199		= "(?:1?\d?\d)";
     $exp_200_255	= "(?:2(?:5[0-5]|[0-4]\d))";
     $exp_0_255		= sprintf("(?:%s|%s)", $exp_0_199, $exp_200_255);
     
     $re = new regex(h\string::format($exp_ip, $exp_0_255));
     */
     $re = new regex(RE_INET4);
     if (!$re->match($this->literal)) {
         throw new exception(sprintf(self::ERR_BAD_IP, $this->literal));
     }
     $refs = $re->get_pieces_by_match(0);
     $this->words[0] = $this->literal->slice($refs[4][0], $refs[4][1])->as_integer();
     $this->words[1] = $this->literal->slice($refs[3][0], $refs[3][1])->as_integer();
     $this->words[2] = $this->literal->slice($refs[2][0], $refs[2][1])->as_integer();
     $this->words[3] = $this->literal->slice($refs[1][0], $refs[1][1])->as_integer();
     $this->raw = $this->words[0] + ($this->words[1] << 8) + ($this->words[2] << 16) + ($this->words[3] << 24);
 }