Sarc Posté 6 Août 2005 Posté 6 Août 2005 Bonjour, Je viens à vous parce que je dois être un peu trop fatigué pour savoir ce que je fais... Suite à une petite erreur de code dans la création de fiches membres sur mon site, certains profils se sont retrouvés avec parfois jusqu'à 10 antislashs avant les apostrophes... Ce qui est assez inesthétique vous en conviendrez Pour tous les enlever, je dois faire un stripslashes(stripslashes(stripslashes($var))); ou il y a un autre moyen un peu mieux de virer tous les antislashs avant les apostrophes ? (sans virer ceux mis volontairement bien sûr...) Merci d'avance
Country Posté 7 Août 2005 Posté 7 Août 2005 Il y a peut être plus propre, mais ça a le mérite de marcher while(ereg('\\\"|\\\\\'',$var)) $var=str_replace(array('\\\'',"\\\""),array('\'',"\""),$var);
Anonymus Posté 7 Août 2005 Posté 7 Août 2005 Le problème auquel tu es confronté est que tu ne sais (a priori) pas combien d'antislashes tu dois enlever. A faire une fonction qui en enlève 'jusqu'à' une dizaine, tu pourrais bien enlever des slashes qui auraient été mis sans vouloir échapper quoique ce soit. Ce genre d'erreur est dû aux formulaires qui ajoutent des slashes. On entre son nom, style : O'Hara, et ca ajoute un slashe : O\'Hara. Si l'on se sert de la fonction 'Retour', ca garde le slashe, et lorsque l'on revalide ca recréé un slashe échappement pour l'apostrophe, mais aussi pour le slashe existant. Ca multiplie ainsi à chaque fois, le nombre de slashes. Le formulaire de contact d'OVH est fait ainsi... Si tu demandes à enlever les slashes, sans savoir s'il y en a 1, 5 ou 10 à enlever, alors les noms du style : \/ictoire (avec un slashe et un antislashe) vont te créer des bugs.. Une des solutions est peut etre justement de les compter : S'il y en a qu'un seul (sans apostrophe derrière), alors il est volontaire. S'il y en a 2, ou s'il y a un apostrophe derrière, c'est qu'il a été ajouté automatiquement. Mais on imagine aussi comme cela que ca peut créer des bugs Une seconde solution pourrait être de les remplacer par des espaces (!?) A voir
Sarc Posté 7 Août 2005 Auteur Posté 7 Août 2005 Merci à tous les deux de vos réponses... Anonymus, tu as tout à fait cerné le problème... En fait, à chaque fois qu'il y avait une erreur sur le formulaire, il était raffiché avec un slash de plus il me semble, parce qu'il y avait un oubli de stripslashes. On a donc effectivement jusqu'à 10 antislashs à chaque apostrophe... Si on a ça sur un texte de présentation, avec 10 apostrophes, on a des fiches illisibles ! La solution donnée par country est pas mal dans le sens ou il n'y a que les antislashs avant les guillemets et apostrophes qui sont enlevés, et non ceux "volontaires"... C'est sûrement ce que je vais utiliser pour l'instant, même si j'ai peur que sur un texte un peu long ça prenne un peu de temps Mais bon, c'est la seule solution visible effectivement, donc merci Country
Anonymus Posté 9 Août 2005 Posté 9 Août 2005 Tu aurais tout intéret à passer l'ensemble de ta base de données avec le code de Country, histoire d'être débarassé du problème une bonne fois pour toutes, plutot que de garder les antislashes dans la base, et chercher juste à modifier l'affichage.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant