LG
Validators para placa e renavam
Quem estiver precisando validar as placas de veículos inclusive no padrão Mercosul, segue o meu validator:
<?phpclass TPlacaValidator extends TFieldValidator { public function validate($label, $placa, $parameters = NULL) { if (strlen($placa) > 0){ $placa = str_replace(' ', '', $placa); if (!(preg_match("/^([A-Z]){3}([0-9]){1,1}([A-Z]){1}([0-9]){2}$/i", $placa) || preg_match("/^([A-Z]){3}-([0-9]){1}([A-Z]){1}([0-9]){2}$/i", $placa) || preg_match("/^([A-Z]){3}([0-9]){4}$/i", $placa) || preg_match("/^([A-Z]){3}-([0-9]){4}$/i", $placa))) { throw new Exception("O campo {$label} está incorreto, verifique e tente novamente"); } } }}?>
E esse é para validar RENAVAM.
Esse deu uma trabalheira, espero que seja útil pra mais alguém.
class TRenavamValidator extends TFieldValidator {
public function validate($label, $renavam, $parameters = NULL) {
if (strlen($renavam)> 0){
$renavam = str_replace(' ', '', $renavam);
if (is_numeric($renavam)) {
$renavam = str_pad($renavam, 11, "0", STR_PAD_LEFT);
if (!preg_match("/[0-9]{11}/", $renavam)) {
throw new Exception("O campo {$label} está incorreto, verifique e tente novamente");
}
$renavamSemDigito = substr($renavam, 0, 10);
$renavamReversoSemDigito = strrev($renavamSemDigito);
$soma = 0;
$multiplicador = 2;
for ($i = 0; $i < 10; $i++) {
$algarismo = substr($renavamReversoSemDigito, $i, 1);
$soma += $algarismo * $multiplicador;
if ($multiplicador >= 9) {
$multiplicador = 2;
} else {
$multiplicador++;
}
}
$mod11 = $soma % 11;
$ultimoDigitoCalculado = 11 - $mod11;
$ultimoDigitoCalculado = ($ultimoDigitoCalculado >= 10 ? 0 : $ultimoDigitoCalculado);
$digitoRealInformado = substr($renavam, -1);
if ($ultimoDigitoCalculado != $digitoRealInformado) {
throw new Exception("O campo {$label} está incorreto, verifique e tente novamente");
}
} else {
throw new Exception("O campo {$label} está incorreto, verifique e tente novamente");
}
}
}
}
?>
Ficou feio o de Renavam, faltou o php na frente, segue novamente.
O validator de placas valida com ou sem o traço de separação.