ciao a tutti! per il controllo su un form sto cercando un attimino di automatizzare, quindi ho fatto una cosa del genere: ho messo in un array i campi con le relative preg:
codice:
$preg=array("cap_cliente"=>"#[0-9]{5}U#",
"cap"=>"#[0-9]{5}U#",
"data_nascita"=>"function=isDate",
"codice_fiscale_cliente"=>"#[a-zA-Z]{6}[0-9]{2}[a-zA-Z][0-9]{2}[a-zA-Z][0-9]{3}[a-zA-Z]#U",
"telefono_cliente"=>"#[0-9]{5,15}#U",
"telefono1"=>"#[0-9]{5,15}#U",
"telefono2"=>"#[0-9]{5,15}#U",
"fax"=>"#[0-9]{5,15}#U",
"partita_iva"=>"#[0-9]{11}#U",
"importo_prestito"=>"#[0-9]{1,}[\.][0-9]{0,2}#U",
"importo_rata"=>"#[0-9]{1,}[\.][0-9]{0,2}#U",
"durata_mesi"=>"#[0-9]{1,3}#U");
e poi il controllo lo effettuo in un foreach dove compongo anche il relativo messaggio d'errore:
codice:
foreach($preg as $c=>$match){
if($$c){
if(strstr($match,"function")){
$func=array_pop(explode("=",$match));
if (!$func($$c)){
$fpre=true;
$c=str_replace("_"," ",$c);
$errp.=" - Il campo {$c} non ha una forma corretta
";
}
}else{
if(!preg_match($match,$$c)){
$fpre=true;
$c=str_replace("_"," ",$c);
$errp.=" - Il campo {$c} non ha una forma corretta
";
}
}
}
}
?>
questo controllo funziona bene, solo non capisco perché ad esempio con i campi numerici (tipo importo rata e importo prestito) non funziona bene...
cioè, se metto un valore stringa => ff mi dice che non è corretto, ma se io metto 12.123456 non mi dà nessun errore, come mai? :master:
eppure ho settato max 2 decimali dopo il punto
Mi sapete spiegare il motivo? Grazie mille!