Example #1
0
 /**
  * Parses a robots.txt file.
  * The end result is a multidimensional array.
  * Each time the parser finds a "User-Agent" directive,
  * we create a new group of directives starting by this one.
  *
  * @param  string   $filePath
  * @return File
  */
 public function parse($filePath)
 {
     $file = new File($this->read($filePath));
     $lines = explode("\n", $file->getContent());
     foreach ($lines as $content) {
         // Skip empty lines
         if (empty($content)) {
             continue;
         }
         $separatorPosition = strpos($content, ':');
         $name = substr($content, 0, $separatorPosition);
         $value = trim(substr($content, $separatorPosition + 1));
         $directive = new Directive($name, trim($value));
         // If the directive's name is "User-Agent" then register a UserAgent in the file
         if (!isset($userAgent) || $directive->isUserAgent()) {
             $userAgent = new UserAgent($directive->getValue(), new Sequence());
             $file->addUserAgent($userAgent);
         } else {
             $userAgent->addDirective($directive);
         }
     }
     return $file;
 }