PDA

Pogčedajte punu verziju : PHP Fontele


webarto
15. 01. 2011., 22:46
Daleko od bulletproof ali valjda može da posluži... Meni dojadilo kad vidim kako unose brojeve telefona iako format piše boldiran slovima.

function fontele($broj){

$broj = preg_replace("#[^0-9]#", "", $broj);
if(substr($broj, 0, 2) == "00") $broj = substr_replace($broj, "", 0, 2);

$duzina["drzava"] = 3;
$duzina["regija"] = 2;
$duzina["broj"] = array(6,7);

$vrijednosti["drzava"] = array("381", "385", "387");
$vrijednosti["regija"] = array();
$vrijednosti["broj"] = array();

$telefon["drzava"] = substr($broj, 0, $duzina["drzava"]);
$telefon["regija"] = substr($broj, $duzina["drzava"], $duzina["regija"]);
$telefon["broj"] = substr($broj, 5, strlen($broj) - ($duzina["drzava"] + $duzina["regija"]));

if(!empty($vrijednosti["drzava"])){
if(!in_array($telefon["drzava"], $vrijednosti["drzava"])) $greska .= "Pozivni broj za državu nije dozvoljen. ";
}
if(!empty($vrijednosti["regija"])){
if(!in_array($telefon["regija"], $vrijednosti["regija"])) $greska .= "Pozivni broj za regiju nije dozvoljen. ";
}
if(!empty($vrijednosti["broj"])){
if(!in_array($telefon["broj"], $vrijednosti["broj"])) $greska .= "Broj telefona nije dozvoljen. ";
}

if(!in_array(strlen($telefon["broj"]), $duzina["broj"])) $greska .= "Broj telefona ne odgovara formatu. ";

$greska = trim($greska);

if(empty($greska)){
echo $telefon["drzava"].$telefon["regija"].$telefon["broj"];
}else{
echo $greska;
}

}

fontele("00386 - 61 / 058-50505");
fontele("0381-61/0580505");
fontele("38661058505");
fontele("+38111058505");
fontele("0038761058505");

Pozivni broj za državu nije dozvoljen. Broj telefona ne odgovara formatu.
Pozivni broj za državu nije dozvoljen. Broj telefona ne odgovara formatu.
Pozivni broj za državu nije dozvoljen.
38111058505
38761058505

mangia
15. 01. 2011., 23:15
Ja to rješavam masked input plugin-om.

http://digitalbush.com/projects/masked-input-plugin/

Ili možeš pogledati i http://livevalidation.com/

webarto
15. 01. 2011., 23:31
Definitivno efikasnije :) Ali neka ovo ostane za server side.

webarto
15. 01. 2011., 23:45
E'o i kratka bez validacije, pod uslovom da će unijeti ispravno, nije bitno u kojem formatu. Ja recimo ovaj format koristim za SMS poruke.

function telefon($broj){

$broj = preg_replace("#[^0-9]#", "", $broj);
if(substr($broj, 0, 2) == "00") $broj = substr_replace($broj, "", 0, 2);
if(substr($broj, 0, 1) == "0") $broj = substr_replace($broj, "387", 0, 1);

return $broj;
}

echo telefon("00 387 61/058-505"); //38761058505
echo telefon("061 / 05 - 85 - 05"); //38761058505
echo telefon("+387 61 05 85 05"); //38761058505