OVH Cloud OVH Cloud

str_replace ne remplace plus ?

8 réponses
Avatar
Denis Beauregard
Bonjour,

J'ai un problème étrange...


echo "[".$lVal."]";
$lVal = str_replace('*','%',$lVal);
$lVal = str_replace(' ','%',$lVal);
echo "via [".$lVal."]";
$lVal = addslashes($lVal);
echo "vers [".$lVal."]<br>";


Donne comme sortie:

[jos*omer]via [jos*omer]vers [jos*omer]

Pourtant, j'ai utilisé str_replace ailleurs et il faisait
bien le remplacement demandé. La page de php.net ne
signale pourtant pas de bogue dans cette fonction.


Denis

8 réponses

Avatar
Olivier Miakinen

echo "[".$lVal."]";
$lVal = str_replace('*','%',$lVal);
echo "via [".$lVal."]";

Donne comme sortie:

[jos*omer]via [jos*omer]


C'est très bizarre. Vérifie à tout hasard les noms de toutes les
variables (par exemple qu'il n'y ait pas un $lVa1 à la place de
$lVal) et aussi que tu n'as pas redéfini la fonction str_replace.

Olivier

P.-S.: si tu ne mets pas une adresse valide dans le champ Reply-To,
autant ne rien y mettre. Et surtout pas une valeur identique à celle
du From.

Avatar
Denis Beauregard
Le 26 May 2005 07:06:10 GMT, Olivier Miakinen <om+
écrivait dans fr.comp.lang.php:


echo "[".$lVal."]";
$lVal = str_replace('*','%',$lVal);
echo "via [".$lVal."]";

Donne comme sortie:

[jos*omer]via [jos*omer]


C'est très bizarre. Vérifie à tout hasard les noms de toutes les
variables (par exemple qu'il n'y ait pas un $lVa1 à la place de
$lVal) et aussi que tu n'as pas redéfini la fonction str_replace.


C'est la 3e ou 4e application que je fais avec le même code. De
plus, ce code fonctionne sur un autre ordinateur (Linux) et il
fonctionnait dans les autres applications sur ce même ordinateur
auparavant.

En parallèle, un like "toto%" dans un query ne fonctionne plus non
plus. Par contre, depuis la fenêtre de phpmyadmin, cela fonctionne.
Je fais un copier-coller depuis l'affichage de la requête dans la
page de résultat vers phpmyadmin.

J'ai désinstallé et ré-installé EasyPHP 1.7. J'ai redémarré
le PC. J'ai regardé le php.ini pour voir s'il y avait un
paramètre bloquant les expressions régulières (mais str_replace
n'a pas d'expression régulière, donc ce n'est pas cela). Je ne vois
pas d'ailleurs comment les fichiers d'initialisation auraient pu se
modifier à mon insu ! Au pire, ils seraient redevenus les valeurs
par défaut.

P.-S.: si tu ne mets pas une adresse valide dans le champ Reply-To,
autant ne rien y mettre. Et surtout pas une valeur identique à celle
du From.


C'est corrigé.


Denis


Avatar
Guy
j'ai testé votre script; sans explication trouvée dans les manuels, en
modifiant le nom de la variable ($1Val => $Val) cela fonctionne

GR

Denis Beauregard a écrit:
Bonjour,

J'ai un problème étrange...


echo "[".$lVal."]";
$lVal = str_replace('*','%',$lVal);
$lVal = str_replace(' ','%',$lVal);
echo "via [".$lVal."]";
$lVal = addslashes($lVal);
echo "vers [".$lVal."]<br>";


Donne comme sortie:

[jos*omer]via [jos*omer]vers [jos*omer]

Pourtant, j'ai utilisé str_replace ailleurs et il faisait
bien le remplacement demandé. La page de php.net ne
signale pourtant pas de bogue dans cette fonction.


Denis


Avatar
Domenjoud Yannick
Il me semble qu'un nom de variable ne doit pas commencer par un chiffre.
Il en est ainsi pour d'autres langages de programmation, je suppose donc
qu'il doit y avoir cet impératif du coté du PHP également.

Cordialement,
Yannick
Avatar
Olivier Miakinen
Bonjour,


j'ai testé votre script; sans explication trouvée dans les manuels, en
modifiant le nom de la variable ($1Val => $Val) cela fonctionne

[ suivi par plus de 20 lignes de citation ]


J'ai approuvé l'article parce qu'il apporte une vraie info, mais en
principe j'aurais dû le refuser pour non respect de la charte par
citation excessive. Merci donc de lire ceci :
<http://www.giromini.org/usenet-fr/repondre.html>.

Par ailleurs, si jamais tu n'es pas le propriétaire du domaine guy.fr
(société Janet ou Néocom Multimédia), note que tu commets une usurpation
d'identité, et que le message de refus ne te serait pas parvenu (de même
que tu contribues à faire spammer quelqu'un d'autre). Si tu es bien le
propriétaire de guy.fr, considère que je n'ai rien dit.

[ suivi positionné ]


Cordialement,
--
Olivier Miakinen, co-modérateur de fr.comp.lang.php

Avatar
Jedi121
Domenjoud Yannick a émis l'idée suivante :
Il me semble qu'un nom de variable ne doit pas commencer par un chiffre. Il
en est ainsi pour d'autres langages de programmation, je suppose donc qu'il
doit y avoir cet impératif du coté du PHP également.

Cordialement,
Yannick


Confirmé dans la doc :
http://www.php.net/manual/fr/language.variables.php

Avatar
John GALLET
Il me semble qu'un nom de variable ne doit pas commencer par un chiffre.


Tout simplement. http://fr3.php.net/manual/en/language.variables.php

Avatar
__marc.quinton__
Denis Beauregard wrote:

J'ai un problème étrange...



chez moi ca marche bien :

<?php

error_reporting(E_ALL);

$lVal = 'jos*omer, I'am young';


echo "[".$lVal."]";

$lVal = str_replace('*','%',$lVal);
$lVal = str_replace(' ','%',$lVal);


echo "via [".$lVal."]";

$lVal = addslashes($lVal); # pour requete BD
# $lVal = urlencode($lVal); # pour envoyer dans une url

echo "vers [".$lVal."]";


?>