Se connecter / S'enregistrer
Votre question

[PHP] supprimer tous les caracteres "non conventionels" dans un text

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
5 Mai 2006 10:17:50

salut a tous, bon ben voila j'explique:

j'ai un textearea qui done donc un $_POST['texte'] que j'enregistre sous la variable $texte

ce que le veu c'est que le texte contenu dans $texte ne contienne que des caracteres "de base" (lettres, chiffre, ponctuation simple)...

en gros virer tous les caracteres "compliqués" comme $*^° etc etc...

comment faire ? :-P

merci d'avance,

Autres pages sur : php supprimer caracteres conventionels text

5 Mai 2006 10:28:03

je crois que c'est ton jour de chance ^^ voila ce que moi j'utilises :
  1. function garde_caracteres($txt,$garde='abcdefghijklmnopqrstuvwxyz0123456789',$replace='_')//ne garde que certains caracteres autorisés dans une chaine. les autres caracteres sont remplacés par $replace
  2. {
  3. $ret="";
  4. $garde=left($garde).$garde;
  5. for($cpt=0;$cpt<strlen($txt);$cpt++)
  6. {
  7. $car=substr($txt,$cpt,1);
  8. if(strrpos($garde,$car))
  9. $ret.=$car;
  10. elseif(right($ret)!=$replace)
  11. $ret.=$replace;
  12. }
  13. if(strlen($replace))
  14. {
  15. if(right($ret)==$replace)
  16. $ret=rogneright($ret);
  17. if(left($ret)==$replace)
  18. $ret=rogneleft($ret);
  19. }
  20. return $ret;
  21. }



voila je précise que la fonction n'est pas de moi. Et j'en remerci son auteur d'ailleurs ;-) :-D

EDIT : j'ai oublié des fonctions que j'utilises dans cette fonction :

function left($txt,$nb=1)
{
return substr($txt,0,$nb);
}
function right($txt,$nb=1)
{
return substr($txt,strlen($txt)-$nb,$nb);
}
function rogneleft($txt,$nb=1)
{
return substr($txt,$nb,strlen($txt));
}
function rogneright($txt,$nb=1)
{
return substr($txt,0,strlen($txt)-$nb);
}
5 Mai 2006 10:31:37

merci a toi j'essayerai ca des que j'aurai le temps ;-)
5 Mai 2006 10:34:32

oups érreur...

la fonction left avec left($garde) n'es pas définie :-(
5 Mai 2006 10:53:16

Salut,

Un moyen puissant et rapide les REGEXP :) 

Cherche un peu sur le net tu trouveras surement ton bonheur ;) 

Cordialement S62.
5 Mai 2006 11:00:10

oui regarde mon post je l'ai édité ;) 

dsl j'avais pas fait gaffe au fonction que j'utilisais !

la tout y est maintenant
5 Mai 2006 13:10:06

merci Kymic c'est nikel ;-)
17 Septembre 2009 15:25:11

Pour ceux qui recherchent une solution plus courte: ereg_replace('([^a-zA-Z0-9])', '', $sString)
17 Septembre 2009 16:48:39

Plutôt utiliser preg_replace que ereg_replace qui va prochainement disparaitre de PHP (dans la version 5.3 il lance une alerte et sera supprimé à partir de PHP6) car trop lent.
20 Septembre 2009 20:37:50

Le preg_replace() utiliser ci dessus ne gardera que les caractères de A à Z majuscules et minuscules et chiffres mais j'ai cru comprendre que tu voulais les apostrophes et d'autres trucs.
Maintenant faut savoir le pourquoi tu veux faire ça, si c'est pour un soucis de sécurité, je te conseille de tout garder mais de juste faire en sorte que le code html qui serait injecté soit affiché comme entré dans le formulaire, donc pas en créant une mise en forme.

J'utilise la fonction suivante:
  1. function securite_text($str)
  2. {
  3. return htmlspecialchars(addslashes(trim($str)));
  4. }
  5.  
  6. tu utilises ça comme suis
  7. $var = securite_text($_POST['contenu']);

Attention, le addslashes n'est à mettre que si tu insères dans une base de données, et si tu veux récupérer ces données par après ne pas oublier de faire un
$var = stripslashes($donnees);
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS