PHPackages                             a-j-n/egyptian-national-id-laravel - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. a-j-n/egyptian-national-id-laravel

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

a-j-n/egyptian-national-id-laravel
==================================

Egyptian National ID validation, parsing, and generation package for PHP and Laravel.

v1.0.1(4mo ago)02MITPHPPHP ^8.2

Since Mar 3Pushed 4mo agoCompare

[ Source](https://github.com/a-j-n/EG-ID)[ Packagist](https://packagist.org/packages/a-j-n/egyptian-national-id-laravel)[ RSS](/packages/a-j-n-egyptian-national-id-laravel/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (3)Versions (3)Used By (0)

Egyptian National ID Laravel Package
====================================

[](#egyptian-national-id-laravel-package)

PHP and Laravel package for Egyptian National ID:

- validation
- parsing
- generation
- sanitization (including Arabic numerals)

Credits
-------

[](#credits)

This package is a PHP/Laravel adaptation of the original project by Mahmoud Ebeid (`mahmoudEbeid2`):

Installation
------------

[](#installation)

```
composer require a-j-n/egyptian-national-id-laravel
```

Laravel package discovery is enabled automatically.

Laravel Setup
-------------

[](#laravel-setup)

For Laravel 10/11/12, no manual setup is needed after install. The package uses Laravel auto-discovery via `composer.json` (`extra.laravel.providers` and `extra.laravel.aliases`).

To verify discovery in Laravel 12:

```
php artisan package:discover
```

Then test quickly in Tinker:

```
php artisan tinker
```

```
app(EgyptianNationalId\NationalIdService::class)->validate('30001010123456');
```

If you need manual registration, add:

```
// config/app.php
'providers' => [
    EgyptianNationalId\EgyptianNationalIdServiceProvider::class,
],

'aliases' => [
    'NationalId' => EgyptianNationalId\Facades\NationalId::class,
],
```

Quick Usage
-----------

[](#quick-usage)

```
use EgyptianNationalId\NationalIdService;

$service = app(NationalIdService::class);

$isValid = $service->validate('30001010123456');
$id = $service->generate(['gender' => 'Male']);
$parsed = $service->parse($id);
```

Facade Usage
------------

[](#facade-usage)

```
use EgyptianNationalId\Facades\NationalId;

$isValid = NationalId::validate('30001010123456');
$parsed = NationalId::parse('30001010123456');
```

Validation Rule (String)
------------------------

[](#validation-rule-string)

```
$request->validate([
    'national_id' => ['required', 'national_id'],
]);
```

Validation Rule (Class)
-----------------------

[](#validation-rule-class)

```
use EgyptianNationalId\Rules\NationalIdRule;

$request->validate([
    'national_id' => ['required', new NationalIdRule()],
]);
```

Parse Result Shape
------------------

[](#parse-result-shape)

```
[
  'national_id' => '...',
  'birth_date' => DateTimeImmutable,
  'birth_year' => 1998,
  'birth_month' => 7,
  'birth_day' => 21,
  'age' => 27,
  'gender' => 'Male'|'Female',
  'governorate' => ['code' => 1, 'name_en' => 'Cairo', 'name_ar' => 'Al Qahirah', 'region' => 'Cairo'],
  'region' => 'Cairo',
  'inside_egypt' => true,
  'is_adult' => true
]
```

API
---

[](#api)

- `sanitize(string|int|null $id): string`
- `validate(string|int|null $id): bool`
- `parse(string|int|null $id): array`
- `extractBirthDate(string|int|null $id): DateTimeImmutable`
- `extractGender(string|int|null $id): string`
- `extractGovernorate(string|int|null $id): ?array`
- `calculateAge(DateTimeInterface $birthDate, ?DateTimeInterface $at = null): int`
- `generate(array $options = []): string`

### Generate Options

[](#generate-options)

- `birth_year` (int)
- `birth_month` (int)
- `birth_day` (int)
- `governorate_code` (int)
- `gender` (`Male` or `Female`)

License
-------

[](#license)

MIT

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance77

Regular maintenance activity

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

123d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/34508885?v=4)[Ahmed Jamal](/maintainers/a-j-n)[@a-j-n](https://github.com/a-j-n)

---

Top Contributors

[![a-j-n-a](https://avatars.githubusercontent.com/u/129997997?v=4)](https://github.com/a-j-n-a "a-j-n-a (3 commits)")

---

Tags

phplaravelvalidationnational idEgypt

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/a-j-n-egyptian-national-id-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/a-j-n-egyptian-national-id-laravel/health.svg)](https://phpackages.com/packages/a-j-n-egyptian-national-id-laravel)
```

###  Alternatives

[propaganistas/laravel-phone

Adds phone number functionality to Laravel based on Google's libphonenumber API.

3.0k39.7M146](/packages/propaganistas-laravel-phone)[laravel/mcp

Rapidly build MCP servers for your Laravel applications.

77022.3M151](/packages/laravel-mcp)[axlon/laravel-postal-code-validation

Worldwide postal code validation for Laravel

3893.6M1](/packages/axlon-laravel-postal-code-validation)[wendelladriel/laravel-validated-dto

Data Transfer Objects with validation for Laravel applications

762649.9k18](/packages/wendelladriel-laravel-validated-dto)[yajra/laravel-oci8

Oracle DB driver for Laravel via OCI8

8793.2M25](/packages/yajra-laravel-oci8)[propaganistas/laravel-disposable-email

Disposable email validator

6023.0M7](/packages/propaganistas-laravel-disposable-email)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
