[php] eviter les caractéres spéciaux
Maxg59
Messages postés
275
Date d'inscription
Statut
Membre
Dernière intervention
-
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
kilian Messages postés 8732 Date d'inscription Statut Modérateur Dernière intervention -
Salut a tous !!!
Je voudrais savoir comment faire pour empécher les caractéres spéciaux en PHP???????
Merci !!!!!
Je voudrais savoir comment faire pour empécher les caractéres spéciaux en PHP???????
Merci !!!!!
A voir également:
- [php] eviter les caractéres spéciaux
- Caractère spéciaux - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Éviter pub youtube - Accueil - Streaming
- Caractères ascii - Guide
30 réponses
Salut !!!
merci mais je crois que j'ai mal expliqué :
je voudrais empécher mes visiteurs, lors de leur inscription de mettre des "'²&~"#'{([-|\_^çà@ dans leurs pseudo ...
merci mais je crois que j'ai mal expliqué :
je voudrais empécher mes visiteurs, lors de leur inscription de mettre des "'²&~"#'{([-|\_^çà@ dans leurs pseudo ...
je ne comprend pas grand chose a cette fonction ....
tu aurais une autre page qui explique un peu plus facile ... ou juste un exemple commenté ...
tu aurais une autre page qui explique un peu plus facile ... ou juste un exemple commenté ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
str_replace fonctionne comme ceci:
str_replace("sous-chaine à remplacer","sous-chaine de remplacement","chaine entière concernée");
Et str_replace ne modifie pas directement la chaine entière concernée, par contre il retourne, comme valeur, la chaine modifiée.
Donc il suffit d'affecter ce retour à la variable qui contient la chaine concernée. Schematiquement:
Je te file une fonction que j'ai faite hier.
Voici en gros ce que ça donnerait avec certains caractères:
str_replace("sous-chaine à remplacer","sous-chaine de remplacement","chaine entière concernée");
Et str_replace ne modifie pas directement la chaine entière concernée, par contre il retourne, comme valeur, la chaine modifiée.
Donc il suffit d'affecter ce retour à la variable qui contient la chaine concernée. Schematiquement:
$chaine_entière_concernée=str_replace("sous-chaine à remplacer","sous-chaine de remplacement",$chaine_entière_concernée);
Je te file une fonction que j'ai faite hier.
Voici en gros ce que ça donnerait avec certains caractères:
function clean_msg($raw_string) { //Caractères à enlever $puncts=array( ".", ";", ",", ":", "!", "?", "/", "&", '\"', "\'", "(", ")", "»", "« ", "\n", "\r" ); /*Pour chaque itération de la boucle, un caractère spécial concerné */ foreach($puncts as $punct) { //Remplacement du caractère concerné /*On le remplace par une absence de caractère, donc on le supprime */ $raw_string=str_replace($punct,"",$raw_string); } // La fonction retourne la chaine modifiée return $raw_string; }
ça y est ! j'ai compri mais je ne voi toujours pas comment empécher de mettre des caractéres spéciaux , cette fonction remplace, il m'en faudrait une qui renvoi vrai si certains caractéres se trouvent dans une chaine ;-)
Merciii
Merciii
je vais utiliser strpos mais bon ça va être long et ça va faire beaucoup de if , else elseif etc ....
merci quand même !!!!!
Max
merci quand même !!!!!
Max
En ce cas tu as juste à utiliser strpos():
http://fr2.php.net/manual/fr/function.strpos.php
Elle renvoie Faux si elle ne trouve pas une sous-chaine.
Il suffit d'utiliser le même genre de fonction que la mienne.
Sauf que si dans ta boucle strpos revoie autre chose que False, alors tu peux faire un return dans ta fonction:
return True;
Qui aura l'avantage d'interrompre ta fonction et d'indiquer si un caractère est présent ou non.
Et après ta boucle, tu peux mettre :
return False;
Si une sous chaine parasite n'a pas été trouvée, les instructions après boucle s'executeront et tomberont de suite sur ton return True.
Voilà voilà. Dis le moi si j'explique mal.
http://fr2.php.net/manual/fr/function.strpos.php
Elle renvoie Faux si elle ne trouve pas une sous-chaine.
Il suffit d'utiliser le même genre de fonction que la mienne.
Sauf que si dans ta boucle strpos revoie autre chose que False, alors tu peux faire un return dans ta fonction:
return True;
Qui aura l'avantage d'interrompre ta fonction et d'indiquer si un caractère est présent ou non.
Et après ta boucle, tu peux mettre :
return False;
Si une sous chaine parasite n'a pas été trouvée, les instructions après boucle s'executeront et tomberont de suite sur ton return True.
Voilà voilà. Dis le moi si j'explique mal.
Non non tu explique bien mais je pense que je n'ai pas encore le niveau... je pense plus qu'il faut apprendre au fur et a mesure des besoins donc il y a beaucoup de choses que je ne connais pas encor mais j'en apprend tout les jours !!!!
j'en profite pour te dire vraiment merci car tu m'aide vraiment beaucoup !!! heuresement que tu es la sinon je ne serais pas dans la m***e ...
Si tu as le temp tu pourrais m'expliquer return car je pense que c'est un truc que je devrais connaitre et qui me faciliterai beaucoup de choses !!!
j'en profite pour te dire vraiment merci car tu m'aide vraiment beaucoup !!! heuresement que tu es la sinon je ne serais pas dans la m***e ...
Si tu as le temp tu pourrais m'expliquer return car je pense que c'est un truc que je devrais connaitre et qui me faciliterai beaucoup de choses !!!
Pas besoin d'une centaine de if:
function detect_parasite($pseudo) { //Caractères à enlever $puncts=array( ".", ";", ",", ":", "!", "?", "/", "&", '\"', "\'", "(", ")", "»", "« ", "\n", "\r" ); foreach($puncts as $punct) { if ( !strpos ($pseudo, $punct) ) return True; } return False; }
Tu vas voir, le return c'est pas très compliqué.
Une fonction doit toujours retourner une valeur.
Tout comme une variable, cette valeur peut être de plusieurs type.
On a du bol avec le Php, on a pas besoin de gérer les types.
Donc ça se passe en arrière plan.
Mais avec des langages de plus bas niveau comme le C, les fonction et les variables ont toujours un type que l'on doit déclarer soi-même.
Traditionnelement c'est:
_Entiers
_Nombre Réels
_Caractères (ou chaine de caractère si le langage les supporte directement).
Et accessoirement tu peux avoir les booléens (vrai/faux) et pour certains langages les dates, les objets etc...
Tu peux direcetement stocker cette valeur de retour ou l'utiliser comme tu veux:
$variable=fonction($argument);
fonction2( fonction($argument) );
Comme tu peux le voir, l'appel d'une fonction se comporte comme une variable => c'est une valeur.
Donc comme au dessus, tu peux l'utiliser comme tu veux, comme argument d'une fonction, ou comme valeur à affecter à une variable etc...
Et cette valeur représentée par une fonction appelée c'est ce qui est retourné par le "return".
De toute façon c'est bête une fonction: c'est juste un machin qui prend une valeur en entrée. Il fait des opérations sur cette valeur, et renvoie une valeur de sortie.
Un autre avantage du return est que cette instruction interrompt le déroulement de la fonction.
L'autre avantage est utilisé dans les conditions:
Si une fonction retourne False, ou 0 ou NULL, tu peux te servir de l'opérateur !
Ca signifie: si cette fonction retourne 0 ou false ou NULL (ou qu'elle est vide, ou qu'elle n'a pas été initialisée) alors executer les instructions du bloc conditionnel.
A l'inverse :
Ca signifie: si une fonction retourne un nombre autre que 0, ou une chaine de caractère, ou un objet, ou True alors executer le bloc conditionnel.
En gros, le "!" représente "Faux" ou vide....Tu peux tout à fait appliquer ce principe aux variables aussi....
Une fonction doit toujours retourner une valeur.
Tout comme une variable, cette valeur peut être de plusieurs type.
On a du bol avec le Php, on a pas besoin de gérer les types.
Donc ça se passe en arrière plan.
Mais avec des langages de plus bas niveau comme le C, les fonction et les variables ont toujours un type que l'on doit déclarer soi-même.
Traditionnelement c'est:
_Entiers
_Nombre Réels
_Caractères (ou chaine de caractère si le langage les supporte directement).
Et accessoirement tu peux avoir les booléens (vrai/faux) et pour certains langages les dates, les objets etc...
Tu peux direcetement stocker cette valeur de retour ou l'utiliser comme tu veux:
$variable=fonction($argument);
fonction2( fonction($argument) );
Comme tu peux le voir, l'appel d'une fonction se comporte comme une variable => c'est une valeur.
Donc comme au dessus, tu peux l'utiliser comme tu veux, comme argument d'une fonction, ou comme valeur à affecter à une variable etc...
Et cette valeur représentée par une fonction appelée c'est ce qui est retourné par le "return".
De toute façon c'est bête une fonction: c'est juste un machin qui prend une valeur en entrée. Il fait des opérations sur cette valeur, et renvoie une valeur de sortie.
Un autre avantage du return est que cette instruction interrompt le déroulement de la fonction.
L'autre avantage est utilisé dans les conditions:
Si une fonction retourne False, ou 0 ou NULL, tu peux te servir de l'opérateur !
if (! fonction($argument) ) / /alors faire machin truc
Ca signifie: si cette fonction retourne 0 ou false ou NULL (ou qu'elle est vide, ou qu'elle n'a pas été initialisée) alors executer les instructions du bloc conditionnel.
A l'inverse :
if ( fonction($argument) ) //Alors faire machin truc)
Ca signifie: si une fonction retourne un nombre autre que 0, ou une chaine de caractère, ou un objet, ou True alors executer le bloc conditionnel.
En gros, le "!" représente "Faux" ou vide....Tu peux tout à fait appliquer ce principe aux variables aussi....
Comme ça:
Je n'ai fait que définir la fonction au dessus. Et ici je l'appele.
if (! detect_parasite($pseudo) ) { //Action }
Je n'ai fait que définir la fonction au dessus. Et ici je l'appele.
Oups, je me suis gourré dans ma fonction, il faut enlever le "!" dans:
if ( !strpos ($pseudo, $punct) )
Salut
dsl si je suis chiant mais bon ... je n'ose pas essayé de retoucher la fonction que tu m'as donner car je n'ai pas du tout le niveau !!!
Comment faire pour que la fonction empecher les caractéres spéciaux de plusieurs variables ?????
Merci d'avance !!!
dsl si je suis chiant mais bon ... je n'ose pas essayé de retoucher la fonction que tu m'as donner car je n'ai pas du tout le niveau !!!
Comment faire pour que la fonction empecher les caractéres spéciaux de plusieurs variables ?????
Merci d'avance !!!
Comment faire pour que la fonction empecher les caractéres spéciaux de plusieurs variables ?????
Je comprend pas bien.... C'est à dire?
En fait ma fonction empêche certains caractères mais c'est à titre d'exemple. Ce ne sont pas les caractères que tu voulais.
J'ai juste crée un tableau qui contient chaque ponctuation. Mais tu peux modifier ce tableau. Chaque ponctuation de ce tableau sera vérifiée...
Je comprend pas bien.... C'est à dire?
En fait ma fonction empêche certains caractères mais c'est à titre d'exemple. Ce ne sont pas les caractères que tu voulais.
J'ai juste crée un tableau qui contient chaque ponctuation. Mais tu peux modifier ce tableau. Chaque ponctuation de ce tableau sera vérifiée...
En fait je voudrais pour utiliser ta fonction pour empécher des caractéres spéciaux dans :
ma variable $pseudo , $passe $passe2 etc ....
les caractéres spéciaux je les changerai aprés
ma variable $pseudo , $passe $passe2 etc ....
les caractéres spéciaux je les changerai aprés
Alors il suffut d'utiliser la fonction pour chacune de ces variables et de vérifier la valeur qu'elle retourne:
Etc...
Tu peux aussi utiliser foreach pour alléger le code:
Si tu ne connais pas bien foreach, je te conseille d'aller voir sur le site de Php, c'est très pratique comme truc :-)
if ( detect_parasite($pseudo) ) { //Action si mauvaise ponctuation } if ( detect_parasite($passe) ) { //Action si mauvaise ponctuation }
Etc...
Tu peux aussi utiliser foreach pour alléger le code:
$vars=array($pseudo , $passe, $passe2); foreach ($vars as $one_var) { if (detect_parasite($one_var) { //Action si mauvaise ponctuation } }
Si tu ne connais pas bien foreach, je te conseille d'aller voir sur le site de Php, c'est très pratique comme truc :-)
Ok mais alors pourquoi tu parle de $pseudo dans ta fonction ??
function detect_parasite($pseudo)
{
//Caractères à enlever
$puncts=array( ".",
";",
",",
":",
"!",
"?",
"/",
"&",
'\"',
"\'",
"(",
")",
"»",
"« ",
"\n",
"\r"
);
foreach($puncts as $punct)
{
if ( !strpos ($pseudo, $punct) )
return True;
}
return False;
}
function detect_parasite($pseudo)
{
//Caractères à enlever
$puncts=array( ".",
";",
",",
":",
"!",
"?",
"/",
"&",
'\"',
"\'",
"(",
")",
"»",
"« ",
"\n",
"\r"
);
foreach($puncts as $punct)
{
if ( !strpos ($pseudo, $punct) )
return True;
}
return False;
}