web-dev-qa-db-fra.com

PHP filtrer avec preg_replace n'autorise que les lettres

J'ai un petit problème avec preg_replace. J'ai besoin d'une fonction qui convertit tous les caractères en rien sauf [A-z][0-9] et certains . ! ?

Je pourrais faire un preg_match, mais cela ne ferait que vérifier et je veux être remplacé. Ceci pour ne pas mettre des caractères indésirables comme <p> et ;[[;[p;[in description META TAG.

Le script doit donc ressembler à:

;")<br>kk23?! => brkk23?!

Toute aide serait appréciée: D

18
Master345
$string = ';")<br>kk23?!'; 
$new_string = preg_replace("/[^A-Za-z0-9?!]/",'',$string);
echo $new_string;

laisser des lettres, des chiffres, des espaces,?!

/* 3 choices. Pick one you like! */
$str = preg_replace("/[^A-Za-z0-9?! ]/","",$str);
$str = preg_replace("/[^A-Za-z0-9?!\s]/","",$str);
$str = preg_replace("/[^A-Za-z0-9?![:space:]]/","",$str);
39
dang
 $var=preg_replace('~[^A-Za-z0-9?.!]~','',$var);

N'oubliez pas que A-Za-z et A-z ne sont pas identiques

6
RiaD

Une solution rapide sera comme ci-dessous aussi:

if (preg_match('/^[\w\.]+$/', $str)) {
    echo 'Str is valid';
} else
    echo 'Str is invalid';

// chaîne ne contient que les lettres a à z, A à Z, 0 à 9 et _ (trait de soulignement)

\w - matches [a-zA-Z0-9_]+

J'espère que ça aide.

2
Aditya P Bhatt

Le moyen le plus simple est de faire quelque chose de similaire à: Ajoutez simplement les caractères après le !, assurez-vous de les échapper si nécessaire.

$string = "<br>kk23?!";
$string = preg_replace('/[^A-Za-z0-9 \?!]/', '', $string);
1
Ben

Plus de visite sur cette page. Je pense que plus de gens ont le même problème. Le meilleur moyen est d'essayer vous-même et d'obtenir ce dont vous avez besoin. Personnalisez le votre ou copiez/collez ce php et essayez-le:

$sample_input = '&&*9?><<script>}cat-<html>ch(_P.,,mE.:;xc##e*p32t.ion $e){di+-($e->ge69tMesPHP _f0sage()3);}';

$output = ereg_replace("[^..........]", "", $sample_input);        

echo "validate =".$output;

modifier en remplissant ceci pour obtenir ce que vous voulez:

 $output = ereg_replace("[^.........]", "", $sample_input);

Exemple: si vous ne voulez que des minuscules, faites comme ceci:

$output = ereg_replace("[^a-z]", $sample_input);

minuscule avec espace blanc:

 $output = ereg_replace("[^a-z ]", $sample_input);

et plus ....., Ceci est une méthode de validation simple:

$username = ereg_replace("[^A-Z0-9_]", "", $username);
$fullname = ereg_replace("[^A-Za-z0-9., ]", "", $fullname);
$city     = ereg_replace("[^A-Za-z -]", "", $city);
$phone    = ereg_replace("[^0-9 +()-]", "", $phone);
$state    = ereg_replace("[^A-Za-z -]", "", $state);
$zipcode  = ereg_replace("[^0-9]", "", $zipcode);
$country  = ereg_replace("[^A-Za-z -]", "", $country);
$gender   = ereg_replace("[^mf]", "", $gender);

Essayez vous-même, l'espoir aidera ...

0
user3706926