str_replace

Eléphanteau du PHP | 20 Messages

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]

ViPHP
ViPHP | 1996 Messages

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
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 mai 2008, 14:43

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

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 20 Messages

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 !

Eléphant du PHP | 209 Messages

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.

Eléphanteau du PHP | 20 Messages

09 mai 2008, 15:40

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

x0s
Eléphanteau du PHP | 22 Messages

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

Eléphanteau du PHP | 20 Messages

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 ...