public function IbanValidator::validate

Checks if the passed value is valid.

@api

Parameters

mixed $value The value that should be validated:

Constraint $constraint The constraint for the validation:

Overrides ConstraintValidatorInterface::validate

File

drupal/core/vendor/symfony/validator/Symfony/Component/Validator/Constraints/IbanValidator.php, line 27

Class

IbanValidator
@author Manuel Reinhard <manu@sprain.ch> @author Michael Schummel @link http://www.michael-schummel.de/2007/10/05/iban-prufung-mit-php/

Namespace

Symfony\Component\Validator\Constraints

Code

public function validate($value, Constraint $constraint) {
  if (null === $value || '' === $value) {
    return;
  }
  $teststring = preg_replace('/\\s+/', '', $value);
  if (strlen($teststring) < 4) {
    $this->context
      ->addViolation($constraint->message, array(
      '{{ value }}' => $value,
    ));
    return;
  }
  $teststring = substr($teststring, 4) . strval(ord($teststring[0]) - 55) . strval(ord($teststring[1]) - 55) . substr($teststring, 2, 2);
  $teststring = preg_replace_callback('/[A-Za-z]/', function ($letter) {
    return intval(ord(strtolower($letter[0])) - 87);
  }, $teststring);
  $rest = 0;
  $strlen = strlen($teststring);
  for ($pos = 0; $pos < $strlen; $pos += 7) {
    $part = strval($rest) . substr($teststring, $pos, 7);
    $rest = intval($part) % 97;
  }
  if ($rest != 1) {
    $this->context
      ->addViolation($constraint->message, array(
      '{{ value }}' => $value,
    ));
    return;
  }
}