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!