probleme d'apostrophe !!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme d'apostrophe !!

par oxy » 21 févr. 2006, 18:52

Je suis bien d'accord que c'est plus facile de l'ajouter avec la function qu'a la main mais n'étant pas une bête en php.
je ne m'en sert qd ds certain cas, ici je n'ai qu'un variable qui pose problème.
Mais c'est vrai que ça pourra tjs servir... :D

Mais puisque tu parles de ça... Y a ti'il une diff entre " et ' ? :?

par Ryle » 21 févr. 2006, 16:44

bah l'intérêt de la fonction addslash (comme de n'importe quelle fonction d'ailleurs), c'est de t'éviter de devoir le faire à main :) Si tu préfères écrire directement l'antislash devant chaque caractère à échapper, ça revient au même :)

Attention toutefois à la façon dont ta chaine est déclaré (entre guillemets ou entre apostrophes)
$var = "c\'est la fête"; 
echo $var; // affiche : c\'est la fête

$var = addslashes("c'est la fête");
echo $var; // affiche : c\'est la fête

$var = 'c\'est la fête'; 
echo $var; // affiche : c'est la fête (sans l'antislash)
donc si tu utilises ensuite $var dans une requête sql :
"SELECT * FROM maTable WHERE monChamp = '$var'";
// tu obtiendras avec 1 et 2
"SELECT * FROM maTable WHERE monChamp = 'c\'est la fête'"; // ok
// mais avec la troisième :
"SELECT * FROM maTable WHERE monChamp = 'c'est la fête'"; // ko

par oxy » 21 févr. 2006, 16:40

ok, merci :D

par albat » 21 févr. 2006, 16:35

Mais alors puis je taper directement : $var = 'c\'est la fête';
et simplement utiliser stripslashes (); pur le virer.
Ou dois-je d'abord automatiquement passer par addslashes();
Vérifie-le en faisant quelques tests, mais ce doit être identique.
addslashes() ne fera que précéder tes apostrophes d'un antislash,
chose que tu peux très bien faire toi-même à la main.

Avantages d'utiliser la fonction addslashes plutôt que le faire à la main :
- c'est plus rapide
- tu es sûr de ne pas en oublier

par oxy » 21 févr. 2006, 16:32

whouaaaaaaa c'est magique ca marche

c'est trop fort c'est truc la je vais y passe la nuit juste pour le plaisir
Je ne sais pas qui à taper celà, mais si pour toi ça parait évident ce ne l'est pas pour moi......

par oxy » 21 févr. 2006, 16:30

Mais alors puis je taper directement :
$var = 'c\'est la fête';

et simplement utiliser stripslashes ();
pur le virer. Ou dois-je d'abord automatiquement passer par addslashes();

par oxy » 21 févr. 2006, 16:25

whouaaaaaaa c'est magique ca marche :D :roll:

c'est trop fort c'est truc la je vais y passe la nuit juste pour le plaisir :lol:

par oxy » 21 févr. 2006, 16:21

ok, merci bcp je vais tester ça....

par albat » 21 févr. 2006, 16:00

Les fonctions addslashes() et stripslashes() sont exactement ce qu'il vous faut.

par oxy » 21 févr. 2006, 14:45

J'ai le même promblème avec une apostrophe ds une variable....

$inf="Envoyez un mail d' information";


Qd il y à l'apostrophe le script s'arrete et n'insert rien ds ma base.. Par contre je ne veux pas non plus qu'il affiche
d/'information... dois je passer par cette m^me fonction qd même ou existe il une autre possibilité pour insérer simplement ce " d' " sans souci ?

par keb » 21 févr. 2006, 14:23

plus claire que ca tu meurt

ok ok je :arrow:

:?:

et mais j'ai une :idea:

heu non rien

par savousepate » 21 févr. 2006, 14:10

il faut que tu utilise la fonction addslashes() qui te permet d'ajouter des \ devant les " ou les '

par exemple, si tu as :
$var = 'c'est la fête';
et que tu essayes de l'insérer dans une table de ta base de données, tu n'auras que c

alors que si tu fais :
$var = addslashes(c'est la fête);
tu obtiendras : c\'est la fête

par contre, si tu veux faire un echo de cette variable par la suite, il faut que tu enlèves les \ grâce à la fonction stripslashes() qui fonctionne de la même manière

... je ne sais pas si j'ai été assez claire

par Invité » 21 févr. 2006, 13:09

et si on rentre un texte avec une apostrphe, dans ma base moi, il se stoppe, et ne complete pas la fin ,comment faire pour qu'il prenne le texte en entier???

par albat » 21 févr. 2006, 13:00

Pareil que Charabia. :pouce:
Je ne copie jamais directement de Word vers un formulaire web.

Je passe toujours via Notepad, de façon à ne récupérer que le texte brut.
C'est-à-dire de manière à ce que les apostrophes et les guillemets
soient débarassés de toute ornementation propre à un traitement de texte.

par charabia » 21 févr. 2006, 12:55

Je pense que Word traduit à sa façon l'apostrophe qui devient un caractère spécial, d'où l'affichage que tu as.

Je ne sais pas trop comment régler directement le problème, mais ce que je fais de mon côté c'est que je fais une recherche/remplace massif avec un éditeur de texte avant de l'intégrer dans mysql.

Je suis preneur s'il y a un autre moyen ;)