Perforce Chronicle 2012.2/486814
API Documentation
|
Validates string for suitability as a robots.txt definition. More...
Public Member Functions | |
isValid ($value) | |
Defined by Zend_Validate_Interface. | |
Public Attributes | |
const | ALLOW_BEFORE_USER_AGENT = 'allowBeforeUserAgent' |
const | CONSTRAINT_REQUIRED = 'constraintRequired' |
const | DIRECTIVE_BEFORE_USER_AGENT = 'directiveBeforeUserAgent' |
const | SITEMAP_INCOMPLETE = 'sitemapIncomplete' |
const | USER_AGENT_INCOMPLETE = 'userAgentIncomplete' |
Protected Attributes | |
$_messageTemplates |
Validates string for suitability as a robots.txt definition.
P4Cms_Validate_RobotsTxt::isValid | ( | $ | value | ) |
Defined by Zend_Validate_Interface.
Checks if the given string appears to be a valid robots.txt definition
string | $value | The value to validate. |
{ $lines = array_map('trim', preg_split("/\r\n|\n|\r/", $value)); $record = array(); $counter = 0; foreach ($lines as $line) { $counter++; // test for comment lines if (preg_match('/^\s*#/', $line)) { continue; } // test for empty lines, which complete a record if (preg_match('/^\s*$/', $line)) { // if a record was started it is now terminated, reset if (count($record)) { $record = array(); } continue; } // test for user agent directives if (preg_match('/^User-agent:(.*)$/i', $line, $matches)) { $userAgent = trim($matches[1]); if (!strlen($userAgent)) { $this->_error(self::USER_AGENT_INCOMPLETE); return false; } // remember that we've seen the user agent directive if (!array_key_exists('userAgent', $record)) { $record['userAgent'] = 0; } $record['userAgent']++; continue; } // test for sitemap directives if (preg_match('/^Sitemap:(.*)$/i', $line, $matches)) { $sitemap = trim($matches[1]); if (!strlen($sitemap)) { $this->_error(self::SITEMAP_INCOMPLETE); return false; } continue; } // at this point, we're handling a non-blank line that does not contain // a User-agent directive. Verify that a User-agent directive has already // been seen for this record. if (!array_key_exists('userAgent', $record)) { $this->_error(self::DIRECTIVE_BEFORE_USER_AGENT); return false; } } return true; }
P4Cms_Validate_RobotsTxt::$_messageTemplates [protected] |
array( self::DIRECTIVE_BEFORE_USER_AGENT => "The User-agent directive must precede any other per-record directives.", self::SITEMAP_INCOMPLETE => "A Sitemap directive is missing a sitemap URL.", self::USER_AGENT_INCOMPLETE => "A User-agent directive is missing a user agent identifier.", )
const P4Cms_Validate_RobotsTxt::ALLOW_BEFORE_USER_AGENT = 'allowBeforeUserAgent' |
const P4Cms_Validate_RobotsTxt::CONSTRAINT_REQUIRED = 'constraintRequired' |
const P4Cms_Validate_RobotsTxt::DIRECTIVE_BEFORE_USER_AGENT = 'directiveBeforeUserAgent' |
const P4Cms_Validate_RobotsTxt::SITEMAP_INCOMPLETE = 'sitemapIncomplete' |
const P4Cms_Validate_RobotsTxt::USER_AGENT_INCOMPLETE = 'userAgentIncomplete' |