1: <?php
2:
3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
13:
14: namespace Jyxo\Input\Validator;
15:
16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
26: class IsIban extends \Jyxo\Input\Validator\AbstractValidator
27: {
28: 29: 30: 31: 32: 33:
34: public function isValid($value)
35: {
36:
37: $iban = preg_replace('~\s+~', '', (string) $value);
38:
39: if (!preg_match('~^CZ(\d{2})(\d{4})(\d{6})(\d{10})$~i', $iban, $matches)) {
40: return false;
41: }
42:
43: list(, $control, $bankCode, $prefix, $base) = $matches;
44:
45:
46: if (!\Jyxo\Input\Validator::isBankAccountNumber(sprintf('%s-%s/%s', $prefix, $base, $bankCode))) {
47: return false;
48: }
49:
50:
51: $temp = $bankCode . $prefix . $base . '1235' . $control;
52: $mod = (int) substr($temp, 0, 9) % 97;
53: $mod = (int) ($mod . substr($temp, 9, 7)) % 97;
54: $mod = (int) ($mod . substr($temp, 16, 7)) % 97;
55: $mod = (int) ($mod . substr($temp, 23)) % 97;
56: if (1 !== $mod) {
57: return false;
58: }
59:
60: return true;
61: }
62: }
63: