Advertisement
Guest User

Untitled

a guest
Mar 25th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.15 KB | None | 0 0
  1. <?php
  2. function cif_validation ($cif) {
  3. $cif = strtoupper($cif);
  4. if (preg_match('~(^[XYZ\d]\d{7})([TRWAGMYFPDXBNJZSQVHLCKE]$)~', $cif, $parts)) {
  5. $control = 'TRWAGMYFPDXBNJZSQVHLCKE';
  6. $nie = array('X', 'Y', 'Z');
  7. $parts[1] = str_replace(array_values($nie), array_keys($nie), $parts[1]);
  8. $cheksum = substr($control, $parts[1] % 23, 1);
  9. return ($parts[2] == $cheksum);
  10. } elseif (preg_match('~(^[ABCDEFGHIJKLMUV])(\d{7})(\d$)~', $cif, $parts)) {
  11. $checksum = 0;
  12. foreach (str_split($parts[2]) as $pos => $val) {
  13. $checksum += array_sum(str_split($val * (2 - ($pos % 2))));
  14. }
  15. $checksum = ((10 - ($checksum % 10)) % 10);
  16. return ($parts[3] == $checksum);
  17. } elseif (preg_match('~(^[KLMNPQRSW])(\d{7})([JABCDEFGHI]$)~', $cif, $parts)) {
  18. $control = 'JABCDEFGHI';
  19. $checksum = 0;
  20. foreach (str_split($parts[2]) as $pos => $val) {
  21. $checksum += array_sum(str_split($val * (2 - ($pos % 2))));
  22. }
  23. $checksum = substr($control, ((10 - ($checksum % 10)) % 10), 1);
  24. return ($parts[3] == $checksum);
  25. }
  26. return false;
  27. }
  28. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement