Autor Zpráva
Someone
Profil *
Dobrý den, mám formulář, kde dotyčný musí zadat emailovou adres a telefoní číslo. chtěl sem zabránit tomu aby tam někdo nepsal nesmysly, tak jsem popužil tuto podmínku
if (ereg("^.+@.+\\..+$", $email))
jenže ješě potřebuji podmínku na telefoní číslo. Prosím vás jak můžu udělat aby bylo v podmínce, že text musí obsahovat pouze čísla 9 znaků dlouhé číslo a aby první tři začínali na jedny z čísel českých operátoru což jsou:

601, 602, 606, 607, 720-729
603, 604, 605, 730-739
608, 774, 775, 776, 777

Předem děkuji za odpověď.
Sir Tom
Profil
Someone:
Dobrý den.
$ceskaTrojcisli = array(601,602,603,604,605,606,607,608,......,777); //pole, kde jsou povolená trojčíslí
$trojcisli = substr($tel,0,3); //z tel. čísla dostanu první 3 čísla
if(strlen($tel)==9 AND in_array($trojcisli,$ceskaTrojcisli)){ //telefonní číslo musí mít délku == 9 AND ono $trojcisli musi byt v poli trojcisel
  //ano, číslo má správný formát
}


edit: A ještě tam můžete přidat podmínku, že tel. číslo je číslo (integer).
meris
Profil
Ahoj,
šlo by to řešit regulárním výrazem, ale možná je jednoduší udělat si takovéto pole:
  $platne_predvolby = array ( '601' => 1, '602' => 1, '606' => 1 , ... , '777' => 1 ); 
  
  
  $predvolba  = substr ($telefon ,  0,  3 ) ;
  
  if ( isset($platne_predvolby[$predvolba]) && preg_match('~^[0-9]{9}$~', $telefon)) {
    // ověřena předvolba a to že zadaný řetězec má 9 číslic
  }

Výhoda tohoto řešení je snadné přidání nové předvolby
panther
Profil
Sir Tom:
- zapomínáš na to, že u telefonního čísla může být více přípustných formátů (xxx xx xx xx - xxx xxx xxx - xxx xxxxxx - xxxxxxxxx - ...)
- může tam být národní předvolba
- neošetřuješ zbylých šest znaků, zda to jou čísla
- ...

Someone:
regulář na telefonní číslo ti jistě napíše někdo hezčí než já, nicméně na email doporučuji použít filter_var.
Majkl578
Profil
$number = '+420xxxxxx';

if (preg_match('~^(\+420)?(?:60[1-8]|72\d|73\d|77[3-7])\d{6}$~', $number, $matches)) {
    echo 'OK';
} else {
    echo 'špatný formát';
}
Číslo může být volitelně i s českou předvolbou.

EDIT: Pokud bys chtěl povolit mezery/pomlčky jak zmínil panther, regulár by vypadal např. takto:
~^(\+420)? ?(?:60[1-8]|72\d|73\d|77[3-7])(?:\d{6}|(?: \d{3}){2}|(?:\-\d{3}){2})$~
Záleží jak tolerantní bychom chtěli být.

↑ [#2] a [#3] jsou dosti krkolomná řešení.

Vodafone i 773.
Sir Tom
Profil
panther:
zapomínáš na to, že u telefonního čísla může být více přípustných formátů
Předpokládám, že ono tel. číslo je již převedené do formátu xxxxxxxxx (bez mezer).
může tam být národní předvolba
Není problém spočítat počet znaků a pak podle nich vybrat předvolbu a mobilní trojčíslí.
neošetřuješ zbylých šest znaků, zda to jou čísla
Už ano, viz můj edit.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0