Ir para conteúdo
Marcio_123

Expressões regulares php

Recommended Posts

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

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

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.