Ověření telefonního čísla v Laravel

Ověřování telefonních čísel v systému Laravel Ověřování telefonních čísel je v moderních aplikacích běžným požadavkem. Čistá a přesná telefonní data zajišťují spolehlivou komunika...

Poptat web

17. 11. 2025

Ověření telefonního čísla v Laravel

Ověřování telefonních čísel v systému Laravel

Ověřování telefonních čísel je v moderních aplikacích běžným požadavkem. Čistá a přesná telefonní data zajišťují spolehlivou komunikaci, správné ověření identity uživatele a konzistentní formátování databáze. Laravel poskytuje flexibilní nástroje pro validaci jednoduchých i složitých formátů telefonních čísel prostřednictvím vestavěných pravidel, regexů, vlastních pravidel a knihoven třetích stran.

Základní ověřování telefonních čísel pomocí vestavěných pravidel

Použití požadovaných a číselných pravidel

Pro základní číselné zadávání v telefonu:

$request->validate([
'phone' => ['required', 'numeric'],
]);

Tím se zajistí, že hodnota bude obsahovat pouze číslice. Je to užitečné pro místní formáty bez symbolů nebo kódů zemí.

Použití regexu pro jednoduché vzory

Regex umožňuje základní vynucení struktury. Například desetimístné místní číslo:

$request->validate([
'phone' => ['required', 'regex:/^[0-9]{10}$/'],
]);

Osvědčené postupy při používání regexů

  • Vzorky musí být minimální a čitelné.
  • Vyhněte se příliš přísným vzorům, které odmítají platné formáty z reálného světa.
  • správně ukončete znaky, abyste se vyhnuli nechtěným shodám.

Ověřování mezinárodních telefonních čísel

Porozumění formátování E.164

E.164 je globální standard pro telefonní čísla. Vyžaduje úvodní znaménko plus následované až patnácti číslicemi. Příklad: +15551234567.

Regex pro E.164 ve validaci Laravel

Spolehlivý vzor E.164:

$request->validate([
'phone' => ['required', 'regex:/^\+[1-9][0-9]{1,14}$/'],
]);

Vysvětlení:

  • Hodnota musí začínat znaménkem plus.
  • První číslice nesmí být nula.
  • Číslo může obsahovat až patnáct číslic.

Obvyklá úskalí

  • Povolení mezer nebo interpunkčních znamének při použití E.164.
  • Přijímá kódy zemí začínající nulou.
  • Zapomenutí ukotvení vzoru regex na začátku a na konci řetězce.

Použití vlastních pravidel ověřování

Vytvoření vlastního pravidla

Generování třídy pravidel:

php artisan make:rule PhoneNumber

Implementace průchodů a zpráv

Příklad pravidla prosazujícího E.164:

namespace App\Rules;
 
use Illuminate\Contracts\Validation\Rule;
 
class PhoneNumber implements Rule
{
public function passes($attribute, $value)
{
return preg_match('/^\+[1-9][0-9]{1,14}$/', $value) === 1;
}
 
public function message()
{
return 'The :attribute field must be a valid phone number.';
}
}

Použití vlastního pravidla uvnitř formuláře Požadavky

public function rules()
{
return [
'phone' => [new \App\Rules\PhoneNumber],
];
}

Tím se zapouzdří logika ověřování a řadiče zůstanou čisté.

Ověřování telefonních čísel v požadavcích na formuláře

Centralizace logiky ověřování

Formulář Žádosti poskytuje vyhrazené místo pro ověřování. Zlepšují udržovatelnost a podporují vlastní zprávy, autorizaci a opakovaně použitelná pravidla.

Příklad FormRequest s pravidly pro telefonování

namespace App\Http\Requests;
 
use Illuminate\Foundation\Http\FormRequest;
 
class StoreUserRequest extends FormRequest
{
public function rules()
{
return [
'phone' => ['required', 'regex:/^\+[1-9][0-9]{1,14}$/'],
];
}
}

Vlastní zprávy a pojmenování atributů

public function messages()
{
return [
'phone.regex' => 'Enter a valid E.164 phone number.',
];
}
 
public function attributes()
{
return [
'phone' => 'phone number',
];
}

Použití knihoven třetích stran pro pokročilé ověřování

Kdy použít knihovnu

Pokud potřebujete specifické formátování, parsování, normalizaci nebo validaci nad rámec jednoduchého regexu, použijte knihovnu. To je užitečné při podpoře více regionů.

Příklad použití balíčku propaganistas/laravel-phone

Nainstalujte balíček:

composer require propaganistas/laravel-phone

Ověření telefonního čísla pro určitou zemi:

$request->validate([
'phone' => ['required', 'phone:US'],
]);

Ověření mezinárodního telefonního čísla:

$request->validate([
'phone' => ['required', 'phone:INTERNATIONAL'],
]);

Ověřte více možných zemí:

$request->validate([
'phone' => ['required', 'phone:US,CA'],
]);

Souhrn

Laravel nabízí výkonné možnosti validace telefonních čísel od jednoduché kontroly číslic až po pokročilou mezinárodní validaci. Vývojáři mohou používat vestavěná pravidla pro jednoduché případy, regex pro strukturované formáty, vlastní pravidla pro složitou logiku a externí knihovny pro globální přesnost. Tyto nástroje umožňují aplikacím shromažďovat čistá, konzistentní a spolehlivá telefonní data v různých oblastech a případech použití.

Původní článek publikoval Nabil Hassen.