Cake\Localized\Validation\FrValidation::personId PHP Method

personId() public static method

Checks a social security number for France.
public static personId ( string $check ) : boolean
$check string The value to check.
return boolean Success.
    public static function personId($check)
    {
        $pattern = '/^[12]\\d{2}(0\\d|1[012])(\\d{2}|2[AB])\\d{8}$/';
        if (!preg_match($pattern, $check)) {
            return false;
        }
        $numberWithoutKey = substr($check, 0, -2);
        $key = substr($check, -2);
        // Corse special cases
        // source : http://xml.insee.fr/schema/nir.html
        // check : http://www.parodie.com/monetique/nir.htm
        if ($numberWithoutKey[6] == 'A') {
            $numberWithoutKey = str_replace('A', '0', $numberWithoutKey);
            $numberWithoutKey -= 1000000;
        } elseif ($numberWithoutKey[6] == 'B') {
            $numberWithoutKey = str_replace('B', '0', $numberWithoutKey);
            $numberWithoutKey -= 2000000;
        }
        return $key == 97 - ($numberWithoutKey - floor($numberWithoutKey / 97) * 97);
    }

Usage Example

Beispiel #1
0
 /**
  * test the postal method of FrValidation
  *
  * @return void
  */
 public function testSsn()
 {
     $this->assertTrue(FrValidation::personId('151024610204325'));
     $this->assertTrue(FrValidation::personId('151022A00400150'));
     $this->assertTrue(FrValidation::personId('151022B03300180'));
     $this->assertFalse(FrValidation::personId('1510246102043'));
     $this->assertFalse(FrValidation::personId('151024610204326'));
     $this->assertFalse(FrValidation::personId('151022A10204326'));
     $this->assertFalse(FrValidation::personId('151022B10204326'));
     $this->assertFalse(FrValidation::personId('15102461020432'));
     $this->assertFalse(FrValidation::personId('151024610204'));
     $this->assertFalse(FrValidation::personId('151022C10204326'));
 }