Вход Регистрация
Файл: concrete5.7.5.6/concrete/src/Validator/String/RegexValidator.php
Строк: 82
<?php
namespace ConcreteCoreValidatorString;

use 
ConcreteCoreValidatorAbstractTranslatableValidator;

class 
RegexValidator extends AbstractTranslatableValidator
{

    
/** Passed string doesn't match */
    
const E_DOES_NOT_MATCH 1;

    
/** @type string Regex pattern */
    
protected $pattern;

    
/**
     * RegexValidator constructor.
     * @param string $pattern
     */
    
public function __construct($pattern)
    {
        
$this->pattern $pattern;

        
$this->setRequirementString(self::E_DOES_NOT_MATCH'Must match pattern.');
        
$this->setErrorString(self::E_DOES_NOT_MATCH, function($validator$code$mixed) {
            return 
sprintf(
                
'RegexError: String "%s" does not match expected pattern.',
                
$mixed);
        });
    }

    
/**
     * @return string
     */
    
public function getPattern()
    {
        return 
$this->pattern;
    }

    
/**
     * @param string $pattern
     */
    
public function setPattern($pattern)
    {
        
$this->pattern $pattern;
    }

    
/**
     * Is this mixed value valid
     *
     * @param mixed             $mixed Can be any value
     * @param ArrayAccess|null $error
     * @return bool
     * @throws InvalidArgumentException Invalid mixed value type passed.
     * @throws RuntimeException         Invalid regex pattern.
     */
    
public function isValid($mixedArrayAccess $error null)
    {
        if (!
is_string($mixed)) {
            throw new 
InvalidArgumentException('ConcreteCoreValidatorStringTooShortValidator only validates string length');
        }

        
$result = @preg_match($this->getPattern(), $mixed);
        if (
$result === false) {
            throw new 
RuntimeException(sprintf('Regex Error: %i'preg_last_error()));
        }

        if (!
$result) {
            if (
$error && $message $this->getErrorString(self::E_DOES_NOT_MATCH$mixed)) {
                
$error[] = $message;
            }

            return 
false;
        }

        return 
true;
    }

}
Онлайн: 2
Реклама