Marcio_123 1 Denunciar post Postado Maio 7, 2020 e ai galera blll to usando uma expressão regular do php preg_replace para remover caracter especial de uma string evitando assim injeção sql. o que ocorre e que quando digite palavras com acentos ela esta removendo as letras. Preciso permitir que passe vogais acentuadas, alguem ai da um help. $abreviacao = preg_replace('/[^[:alnum:] a-z]/','',$abreviacao); Compartilhar este post Link para o post Compartilhar em outros sites
Omar~ 87 Denunciar post Postado Maio 7, 2020 Mas que tipo de caractere especial? Na via das dúvidas opte pela função htmlentities Compartilhar este post Link para o post Compartilhar em outros sites
Marcio_123 1 Denunciar post Postado Maio 8, 2020 bom ida Omar blll caracteres que podem ser passadas via post tipo aspa simples, sinal de igual. //pegando o campo do formulario via post $cliente = $_POST['cliente']; //limpando o campos de caracteres especiais $cliente = preg_replace('/[^[:alnum:] ]/','',$cliente); faça essa limpeza dos caracteres antes de fazer o cadastro no banco, o que ocorre é que se envio palavra com acentos ex â, é, ô, ç, ele esta removendo essas letras. Compartilhar este post Link para o post Compartilhar em outros sites
Omar~ 87 Denunciar post Postado Maio 8, 2020 Hun... Nesse caso basta fazer a substituição, listando todos os caracteres em um array e usar a função str_replace para substituí-los por nada. Exemplo: <?php $stringInicial = " > 'João' e 'maria' < foram no \"mercado\" comprar = `pão`"; var_dump($stringInicial); $invalidos = [ // Array com todos tipos de caracteres que queira remover da string; '"', "'", '`', '=', '-', '<', '>' ]; $stringLimpa = str_replace($invalidos, null, $stringInicial); // Fazendo a substituição por um valor nulo echo ("<hr />"); var_dump($stringLimpa); Lógico que isso irá remover quaisquer caracteres que estejam no array, porém temos nesse termo espaços duplicados como "o asterisco representa um espaço" Antes: *>*'João' Depois: **João Então basta fazer o tratamento desse termo. Porém se for mesmo questão de usar uma expressão basta usar o regex aceitando acentuações: <?php $stringInicial = " > 'João' e 'maria' < foram no \"mercado\" comprar `pão`"; var_dump($stringInicial); echo ("<hr />"); $stringLimpa = preg_replace('/[^[:alnum:] a-zÀ-ú]/', '', $stringInicial); var_dump($stringLimpa); Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme Luiz 41 Denunciar post Postado Maio 8, 2020 E porque não utilizar a função nativa? mysqli_real_escape_string Compartilhar este post Link para o post Compartilhar em outros sites