Str_replace tableau

nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006 - 10 févr. 2006 à 02:11
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 13 févr. 2006 à 15:28
Bonsoir,

J'aimerai remplacer des caractère donnés dans un tableau à "key" comme on dit...:

function Conversion ($chaine) {



$conversion = array(

':)' => '*souris*',

':(' => '*triste*',

':|' => '*neutre*

);

foreach($conversion as $code => $valeur)

{

$chaine_finie .= str_replace($code,$valeur,$chaine);

}

echo $chaine_finie;

}



Voilà donc je pense que c'est assez clair.

Sachant que ce code me renvoie ceci, quand $chaine vaut ":):(:|" : *souris*:(:|:)*triste*:|:):(*neutre*.



Merci pour votre aide.

nashoy

18 réponses

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
10 févr. 2006 à 07:54
Hello,



Tu as fait ce que j'appelle une faute qui bouffe la vie car on la voit pas



Ce n'est pas str_replace($code,$valeur,$chaine) mais str_replace($code,$chaine,$valeur);



De plus, attention à ton array, il est mal fermé: ':|' => '*neutre* -> ':|' => '*neutre*'




*****
THINK -> SEEK -> ASK
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 févr. 2006 à 08:01
hello,

bah évidemment, que veux tu que cela te renvoie...?

Vire ta fonction inutile, déjà.
Vire le foreach, et fais juste :
$aNeedle = array (':)', ':(', ':|');
$aTrans = array ('*souris*', '*triste*', '*neutre*');
$chaine = str_replace ($aNeedle, $aTrans, $chaine);
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 févr. 2006 à 08:03
Malik, tu es mal réveillé ;-)
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
10 févr. 2006 à 08:07
Hein quoi comment ou qui ça??!!!

euh, scouzi, mais en faisant:



$conversion array(':)'> '*souris*',':(' => '*triste*',':|' => '*neutre*');

$chaine = ":):(:|";

foreach($conversion as $code => $valeur)

{

$chaine2 .= str_replace($code,$chaine,$valeur);

$chaine2 .= '
';

}

echo $chaine2;



-> *souris*

*triste*

*neutre*



So, je pige pas la remarque (peut-être que je suis VRAIMENT mal réveillé !!! )

*****
THINK -> SEEK -> ASK
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
10 févr. 2006 à 08:13
Il veut, dans $chaine, trouver les clefs de son tableau présentes dans $chaine, et les remplacer par les valeurs de son tableau. Si j'ai bien pigé.

Donc
mixed str_replace ( mixed search, mixed replace, mixed subject [, int &count] )

mixed search, ce sont les clefs de son tableau
mixed replace, ce sont les valeurs de son tableau
mixed subject, c'est sa chaine.

Et pas besoin de foreach, str_replace prend des tableaux en paramètres. Sinon, là, il boucle trop et obtient forcément n'importe quoi.

Ou alors, c'est moi qui suis vraiment très mal réveillé ;-)
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
10 févr. 2006 à 08:16
ouais, bon, je vais pas réfléchir plus, j'ai les yeux tout collés de toute façon là :)

Je rajouterais qu'effectivement la boucle est inutile. Voili voilà, bonne nuit

*****
THINK -> SEEK -> ASK
0
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006
10 févr. 2006 à 12:01
Bonjour,

en fait je connais déjà la variante des 2 tableaux comme tu l'as dit
malalam, mais je préfèrerais le faire avec un tableau comme j'ai dit,
je trouve ça plus clair:

$conversion = array(

':)' => '*souris*',

':(' => '*triste*',

':|' => '*neutre*'

);

On peut facilement en rajouter en restant clair.



malik7934, ce que tu m'as donné affiche tout le contenu du tableau, or
j'aimerai seulement remplacer le code dans une chaine, par ex:

$chaine = "bonjour:)";

$chaine_fini vaut alors : "bonjour*souris*"


Si il le faut, j'adopterai la méthode des 2 tableaux, mais je préfèrerai de loin l'autre.



Merci beaucoup pour votre aide.
nashoy
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 févr. 2006 à 12:02
Salut,

$rechercher= array('machin','truc','bidule');
$remplacer=array('truc','bidule','chouette');

$chaine='truc machin bidule';

echo $chaine=str_replace($rechercher,$remplacer,$chaine);

ça va t'afficher bidule truc chouette

a +
<hr size ="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006
10 févr. 2006 à 17:24
Salut Anthomicro,

dans mon message précédent, je disais que je cherche (si possible) une
autre méthode, car je trouve que celle des 2 tableaux n'est pas très
propre à mon gout (quand la liste devient plus longue).

Merci quand même.

nashoy
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 févr. 2006 à 17:39
y'a pas d'autre méthode plus propre que ça pour remplacer de multiples valeurs, mais si tu veux alonger le temps d'exécution, tu peux par exemple mettre tout ce que tu recherches dans un fichier (un truc par ligne) et ce que tu veux remplacer et puis tu fais par exemple

$chaine=str_replace(file('rechercher.txt'),file('remplacer.txt'),$chaine);

rechercher contenant par exemple

machin
truc
bidule

et remplacer

truc
bidule
chouette
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006
10 févr. 2006 à 17:45
Ok merci.

Bon je crois que je vais la faire à l'ancienne:

$chaine = str_replace (('[vert]'),"",$chaine);


$chaine = str_replace (('[jaune]'),"",$chaine);

$chaine = str_replace (('[blanc]'),"",$chaine)

Merci encore.
nashoy
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 févr. 2006 à 19:19
remplace les chaine

ça sera au moins valide XHTML.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006
10 févr. 2006 à 22:41
Où est la différence ?

nashoy
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 févr. 2006 à 22:54
Je viens de le dire "ça sera au moins valide XHTML."

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
nashoy Messages postés 125 Date d'inscription dimanche 6 avril 2003 Statut Membre Dernière intervention 7 octobre 2006
10 févr. 2006 à 22:55
Oui d'accord, mais si ça ne change rien au visuel...

nashoy
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 févr. 2006 à 22:57
hum.... ça change en terme de politique d'accessibilité, de code plus propre...

ça me fait penser aux gens qui disent que <? et <?php c'est pareil...

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
cs_spyro666 Messages postés 137 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 28 août 2007
13 févr. 2006 à 11:42
Surtout qu'il existe une multitude de fichiers dont les entêtes commencent en <? .

Spyro666 contre le 555
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 févr. 2006 à 15:28
Dans ce cas là faudra aussi (ce qui n'est pas plus mal) désactiver les short_tags.

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0
Rejoignez-nous