Skip to content
This repository has been archived by the owner on Jun 30, 2020. It is now read-only.

kennylajara/robots-txt-parser

 
 

Repository files navigation

robots-txt-parser

php класс для парса всех директив файла robots.txt.

Build Status

Попробовать demo работы класса RobotsTxtParser он-лайн.

Парсинг осуществляется по правилам в соответствии с Google & Yandex спецификациями. Specifications:

Это форк репозитория https://github.com/t1gor/Robots.txt-Parser-Class где я являлся контрибутором, но внесён ряд улучшений:

  1. парс директивы Clean-param в соответствии с clean-param синтаксисом
  2. удаление комментариев (everything following the '#' character, up to the first line break, is disregarded)
  3. улучшение парса host - межсекционная директива, должна относиться к user-agent '*'; при наличи нескольких host поисковики берут значение первой
  4. из класса удалены неиспользуеме методы, сделан рафакторинг, исправлена область видимости свойств класса
  5. добавлено больше тестовых кейсов, а также тестовые кейсы добавлены на весь новый функционал
  6. добавлен класс RobotsTxtValidator для проверки разрешён ли url к парсингу
  7. с версией 2.0 очень значительно увеличено быстродействие RobotsTxtParser

Поддерживаемые директивы:

  • DIRECTIVE_ALLOW = 'allow';
  • DIRECTIVE_DISALLOW = 'disallow';
  • DIRECTIVE_HOST = 'host';
  • DIRECTIVE_SITEMAP = 'sitemap';
  • DIRECTIVE_USERAGENT = 'user-agent';
  • DIRECTIVE_CRAWL_DELAY = 'crawl-delay';
  • DIRECTIVE_CLEAN_PARAM = 'clean-param';
  • DIRECTIVE_NOINDEX = 'noindex';

Usage example

$parser = new RobotsTxtParser(file_get_contents('http://example.com/robots.txt'));
var_dump($parser->getRules());
$parser = new RobotsTxtParser("
	User-Agent: *
	Disallow: /ajax
	Disallow: /search
	Clean-param: param1 /path/file.php

	User-agent: Yahoo
	Disallow: /

	Host: example.com
	Host: example2.com
");

var_dump($parser->getRules());
array(2) {
  ["*"]=>
  array(3) {
    ["disallow"]=>
    array(2) {
      [0]=>
      string(5) "/ajax"
      [1]=>
      string(7) "/search"
    }
    ["clean-param"]=>
    array(1) {
      [0]=>
      string(21) "param1 /path/file.php"
    }
    ["host"]=>
    string(11) "example.com"
  }
  ["yahoo"]=>
  array(1) {
    ["disallow"]=>
    array(1) {
      [0]=>
      string(1) "/"
    }
  }
}

Please use v2.0+ (the latest master) which works by same rules but is more highly performance.

About

php class for parse all directives from robots.txt files

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%