str_replace

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 : str_replace

par Lamy » 09 mai 2008, 18:41

Merci quand même, pour les magic-quotes : j'avais lu ce tutorial mais avec str_replace, addslashes et trimslashes j'ai tout ce qu'il faut pour na pas avoir à compter sur des configs dont les variations possibles d'une machine à l'autre ne rend pas la manip très assurrée ...

par x0s » 09 mai 2008, 15:55

Code : Tout sélectionner

[i] mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) [/i] str_replace() retourne une chaîne ou un tableau, dont toutes les occurrences de search dans subject ont été remplacées par replace
Source : http://uk.php.net/manual/fr/function.str-replace.php

D'après la documentation, str_replace retourne la nouvelle chaine, il était donc normal que dans ton code d'origine, la variable $message ne changeait pas.

str_replace accepte tout à fait les apostrophes. Voici un code plus juste:
$message = "ajout d'une ligne";
var_dump($message);
$message = str_replace ("'", "''",$message);
var_dump($message); 
Si tu veux en savoir davantage sur les magic_quotes:
http://www.phpfrance.com/tutoriaux/inde ... gic-quotes

(Edit : Désolé pour la redondance, pas assez rapide :) )

par Lamy » 09 mai 2008, 15:40

Mais oui !
J'ai lu la doc mais je n'ai rien vu ...
Quel mauvais !
Merci !!!

Re: str_replace

par SpintroniK » 09 mai 2008, 15:38

var_dump($message);
str_replace ("'", "''",$message);
var_dump($message);
ne fonctionne pas car il faut faire :
var_dump($message);
$message = str_replace ("'", "''",$message);
var_dump($message);
comme l'a dit Truc, regarde la documentation de str_replace...
Si ça fonctionne sur ta base c'est surement que dans ta requête tu as mis :
str_replace ("'", "''",$message);
et non $message directement.

par Lamy » 09 mai 2008, 15:23

Merci,
En fait je n'y comprend rien : la valeur affichée n'est pas celle que j'attends mais la valeur prise en compte en base et celle affichée en consultation après est bien correcte ...
On m'a parlé des "magic-quotes" je ne sais pas trop comment ça marche dans le détail mais si ça se trouve je ne "vois" pas le texte tel qu'il est avec "var_dump" mais tel que le serveur me le montre ???
Bon en tout cas : je croise les doigts : ça semble marcher même si je ne pige pas tout !!
Merci en tout cas !

par Truc » 09 mai 2008, 14:43

regarde la doc pour str_replace() et notamment la valeur de retour :)

par Aureusms » 09 mai 2008, 14:29

Peut être qu'il faille protéger ton double quote via \
str_replace ("'", "\'\'",$message); 
Là je pense que cela devra marcher

str_replace

par Lamy » 09 mai 2008, 14:21

Bonjour j'utilise (en local pour l'instant : avec easy-php) la fonction str_replace mais elle ne semble pas fonctionner ... Pourquoi ?
Mon code :
var_dump($message);
str_replace ("'", "''",$message);
var_dump($message);
J'obtiens :
string(17) "ajout d'une ligne" string(17) "ajout d'une ligne"
au lieu de
string(17) "ajout d'une ligne" string(17) "ajout d''une ligne"

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]