Úloha 12: Ověření IČ (Identifikačního čísla osoby)
Cíl úlohy
Vytvořte skript pro ověření platnosti identifikačního čísla osoby (IČ / IČO) používaného v České republice. IČ je osmimístné číslo, jehož poslední (osmá) číslice je kontrolní a počítá se pomocí váženého součtu prvních 7 číslic se sestupnými váhami.
Algoritmus výpočtu kontrolní číslice IČ (MathML)
1. Vypočteme vážený součet A prvních sedmi číslic s váhami od 8 do 2:
2. Zbytek z po dělení číslem 11: .
3. Kontrolní číslice se určí podle pravidla:
- Pokud nebo , pak
- Pokud , pak
- V ostatních případech:
Úvahy a doporučený postup řešení
- Očištění vstupu: Uživatel může zadat IČ s mezerami (např.
255 96 641). Použijtepreg_replace('/\s+/', '', $ic). - Kontrola formátu: IČ musí mít přesně 8 číslic:
preg_match('/^\d{8}$/', $ic). - Procházení řetězce: V PHP lze k jednotlivým znakům řetězce přistupovat jako k prvkům pole, např.
$ic[0]až$ic[6].
Doplňující otázky k zamyšlení a náměty na rozšíření
- 1. Jak se nazývá veřejný rejstřík Ministerstva financí ČR (ARES), z něhož lze pomocí REST API načíst název firmy podle platného IČ?
- 2. Proč se v algoritmu používají právě váhy 8, 7, 6, 5, 4, 3, 2 a dělení 11? Proti jakým nejčastějším chybám při ručním opisování tento kontrolní součet chrání (např. záměna dvou sousedních číslic, překlep v jedné číslici)?
Vyzkoušejte funkční řešení: Otevřít vzorovou úlohu overeni_ic.php