Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal, estou com um modulo onde consta os inputs cpf, cep e telefone com mascara, porem quando gravo em banco gostaria de gravar sem as mask principalmente o cpf por user como query no futuro para os filtros de pesquisa , como resolvo isso ?
Então estou fazendo assim, para receber os dados eu armazeno em um arrey com o em uma variável data
$data = filter_input_array(INPUT_POST, FILTER_DEFAULT);
var_dump($data);
como vou aplicar o str_replace somente no input cpf ?
no casa seria nesse parâmetro $data['cpf'];
eu aplico o str_replace na variável ou no método onde estuo gravando os dados ?Coloque o código todo aqui entre as tags [ code ] [ / code ] (tudo junto)
abaixo o código onde eu pego os dados e com o objeto da classe admin cliente eu gravo ono banco
$data = filter_input_array(INPUT_POST, FILTER_DEFAULT);
if (!empty($data['SendPostForm'])):
unset($data['SendPostForm']);
require '_models/AdminClientes.class.php';
$cadastra = new AdminClientes;
$cadastra->ExeCreate($data);
if (!$cadastra->getResult()):
WSErro($cadastra->getError()[0], $cadastra->getError()[1]);
endif;var_dump($data);
endif;Tem algum lugar aí na sua aplicação onde tem as regras do filter_input_array() pra fazer a filtragem. Por aí também dá pra fazer, porém vai ser remendo/gambiarra.
>
Agora, BrunoBit disse:
Tem algum lugar aí na sua aplicação onde tem as regras do filter_input_array() pra fazer a filtragem. Por aí também dá pra fazer, porém vai ser remendo/gambiarra.
Então não tem como colocar essa particularidade do cpf sem da mask no seu método setdata na class ?
private function setData() {
$this->Data = array_map('strip_tags', $this->Data);
$this->Data = array_map('trim', $this->Data);
$this->Data['cpf'] = ($this->Data['cpf']);
}
//Cadastra a jornada no banco!
private function Create() {
$Create = new Create;
$Create->ExeCreate(self::Entity, $this->Data);
if ($Create->getResult()):
$this->Result = $Create->getResult();
endif;
}Teoricamente sim, tem que fazer um teste.
Faz isso:
$this->Data['cpf'] = preg_replace("/[^\d]+/","",$this->Data['cpf']);
Deu certo muito obrigado .
Pode usar o str_replace() pra remover caracteres específicos:
$cep = str_replace("-", "", "00000-000"); // 00000000
$cpf = str_replace([".","-"], "", "000000000-00"); // 00000000000
Pode usar o preg_replace() também:
$cep = preg_replace("/[^\d]+/", "", "00000-000"); // 00000000
$cpf = preg_replace("/[^\d]+/", "", "000.000.000-00"); // 00000000000