[RESOLU] str_replace ne fonctionne pas comme attendu

Eléphanteau du PHP | 13 Messages

23 avr. 2013, 10:50

Bonjour,

Je suis débutant en php.

Je cherche à utiliser str_replace, mais sans succès.

Mon problème est le suivant :

La variable var1 peut prendre la valeur test
Je souhaite effectuer le remplacement suivant :
si la variable var1 est égale à test, alors :
remplacer test
par
<span style="color: #003399"><font face="Verdana"><i>test</i></font></span>

J'ai utilisé le code ci-dessous, mais il ne fonctionne pas :
$templateVars['{var2}'] = str_replace('test', '<span style="color: #003399"><font face="Verdana"><i>test</i></font></span>', $templateVars['{var1}']);


Merci par avance pour toute aide à ce sujet.

Cordialement,

Patrick

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

23 avr. 2013, 11:05

salut,

qu'entend par ça ne fonctionne pas ?

peux tu donner un exemple de donnée pour test (ce que contient $templateVars['{var1}'] par exemple).

pour info les balise font et i ne sont plus trop au gout du jour utilise plutôt une classe css sur le span qui fera le tout ;) )


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 13 Messages

23 avr. 2013, 16:15

Merci pour la réponse

Ne fonctionne pas : je veux dire que le remplacement attendu ne se fait pas.

Pour prendre un exemple encore plus simple que le précédent :
Une valeur possible de var1 est "test"
Je souhaite effectuer l’opération suivante :
si la variable var1 est égale à "test", donner à la variable var2 la valeur "test-r"

Pour espérer faire cette opération, j'utilise le code suivant
$templateVars['{var2'] = str_replace('test', 'test-r', $templateVars['{var1}']);

Mais, malheureusement après cette opération, var2 (qui n'est défini que par la ligne ci-dessus) est égal à "test" et non à "test-r"

Merci encore pour toute aide

Patrick

Mammouth du PHP | 2278 Messages

23 avr. 2013, 17:47

<?PHP
$templateVars['{var1}'] = 'test';
/*Avec la syntaxe que tu envoies
Array ( [{var1}] => test [{var2] => test-r ) 
*/
$templateVars['{var2'] = str_replace('test', 'test-r', $templateVars['{var1}']);
print "<h1>Envoi</h1>";
print_r($templateVars);
unset($templateVars);
/*Avec une syntaxe usuelle*/
$templateVars['var1'] = 'test';
$templateVars['var2'] = str_replace('test', 'test-r', $templateVars['var1']);
print "<h1>Mon avis</h1>";
print_r($templateVars);
?>
Mais ce n'est pas var1 et var2 mais les éléments du tableau $templateVars....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 13 Messages

25 avr. 2013, 12:32

Bonjour,

Merci pour vos réponses précédentes,

J'ai modifié le code de la façon suivante :

ancienne méthode ne fonctionnant pas :
$templateVars['{var2'] = str_replace('test', 'test-r', $templateVars['{var1}']);

nouvelle méthode qui fonctionne :
if (!strcasecmp($templateVars['{var1}'], 'test'))
$templateVars['{var2}'] = '<span style="color: #003399;">'.$templateVars['{var1}'].'-r</span>';


Merci encore.

Cordialement,

Patrick