Ejemplo n.º 1
0
 /**
  * Transform file content to structured Rules
  * @return Rules The valid ruleset
  */
 public function parse()
 {
     $rules = new Rules();
     $userAgent = $rule = null;
     $separator = "\r\n";
     $line = strtok($this->content, $separator);
     while ($line !== false) {
         if (strpos($line, '#') !== 0) {
             if (preg_match('/^User-Agent\\: (.*)$/i', $line, $matches)) {
                 if ($userAgent !== null && $rule !== null) {
                     $rules->add($userAgent, $rule);
                 }
                 $userAgent = $matches[1];
                 $rule = new Rule();
             } elseif (preg_match('/^Allow: (.*)$/i', $line, $matches)) {
                 $rule->allow($matches[1]);
             } elseif (preg_match('/^Disallow: (.*)$/i', $line, $matches)) {
                 $rule->disallow($matches[1]);
             }
         }
         $line = strtok($separator);
     }
     //Handle the last item in the loop
     if ($rule instanceof Rule) {
         $rules->add($userAgent, $rule);
     }
     return $rules;
 }