Validation for Romanian Social Security Number (Validare CNP).
From version 3.0 need PHP >= 7.4 From version 2.0 was added possibility to extract some data from a valid CNP (see example below).
composer require alcea/cnp
"alcea/cnp": "^3.0"
"alcea/cnp": "2.1.6"
<?php
// require __DIR__ . '\vendor\autoload.php';
use alcea\cnp\Cnp;
$cnpToBeValidated = '5110102441483';
$cnp = new Cnp($cnpToBeValidated);
if ($cnp->isValid()) {
// extract information from CNP
echo "CNP {$cnpToBeValidated} - is valid" . PHP_EOL;
echo "Birth Date: {$cnp->getBirthDateFromCNP('Y/m/d')}" . PHP_EOL;
echo "Birth Place: {$cnp->getBirthCountyFromCNP()}" . PHP_EOL;
echo "Gender: {$cnp->getGenderFromCNP('male', 'female')}" . PHP_EOL;
echo "Serial: {$cnp->getSerialNumberFromCNP()}" . PHP_EOL;
echo "Person is " . ($cnp->isPersonMajor() ? '' : 'not' ) . ' major' . PHP_EOL;
echo "Person have an Identity Card " . ($cnp->hasIdentityCard() ? 'YES' : 'NO' );
} else {
echo "CNP {$cnpToBeValidated} is invalid" . PHP_EOL;
}
// or call static
echo "CNP {$cnpToBeValidated} is " . Cnp::validate($cnpToBeValidated) ? 'valid' : 'invalid';
## Open an terminal and run commands:
git clone https://github.com/alceanicu/cnp.git
cd cnp
composer install
./vendor/bin/phpunit --bootstrap ./vendor/autoload.php --testdox
This package is licensed under the MIT license.