replace PHP

WRInaute impliqué
Salut les gars, j'ai besoin d'aide please

je veux supprimer des mots dans un texte,
j'ai essayé :
$texte = str_replace("motàsupprimer1","",$texte);
$texte = str_replace("motàsupprimer2","",$texte);
$texte = str_replace("motàsupprimer3","",$texte);
...
cependant si j'utilise cette fonction ca me supprime aussi les mots similaires (par exemple pour "chien" ca me supprime aussi "chienne")

j'ai pensé à mettre des points pour séparer les mots :
$texte = str_replace(".motàsupprimer.","",$texte);
comme ça, ça marche,

mais y a pas plus simple ???
car il faut ajouter les points entre tous les mots, chercher les suppressions et ensuite re-enlever les points entre chaque mot ... enfin galère

merci de votre aide
carole
 
WRInaute impliqué
Salut

Regarde si ca marche pour ton cas ca, je sais pas si ca remplace par exemple renards par grizzlys
Code:
<?php
$string = "Le renard marron agile saute par dessus le chien paresseux.";

$patterns[0] = "/agile/";
$patterns[1] = "/marron/";
$patterns[2] = "/renard/";

$replacements[2] = "grizzly";
$replacements[1] = "brun";
$replacements[0] = "lent";

echo preg_replace($patterns, $replacements, $string);
?>
 
WRInaute impliqué
si tes mots sont séparés par des espaces:
Code:
$texte = " ".trim($texte)." ";
$texte = str_replace(" motàsupprimer1 "," ",$texte);
$texte = str_replace(" motàsupprimer2 "," ",$texte);
$texte = str_replace(" motàsupprimer3 "," ",$texte); 
$texte = trim($texte);
 
WRInaute impliqué
jeromax a dit:
si tes mots sont séparés par des espaces:
Code:
$texte = " ".trim($texte)." ";
$texte = str_replace(" motàsupprimer1 "," ",$texte);
$texte = str_replace(" motàsupprimer2 "," ",$texte);
$texte = str_replace(" motàsupprimer3 "," ",$texte); 
$texte = trim($texte);

Oui mais si le mot est "je" ou WRI

Le cas suivant marchera pas :

Je suis sur WRI.

Parce que pas d'espaces soit devant, soit derrière.

[EDIT] Ooops en fait ca marchera bien j'ai rien dit ^^
[EDIT 2] En fait ca marchera pas pour sous-marin par exemple (si on veut enlever "marin"
 
WRInaute impliqué
Les mots en fin de phrases marcheront pas non plus : Je suis allé à la plage. y'a pas d'espace après "plage" ;)
 
WRInaute impliqué
Ce n'est pas ce que veut Caro: Elle dit que ça marche en mettant des points entre chaque mot... donc c'est plus une suppression d'une liste de mot que d'un texte (c'est ce que j'ai compris entous cas), sinon elle perd tous les points initiaux.
 
WRInaute occasionnel
eregi_replace(" mot1 | mot2 | mo3 "," ",$texte);
ou
ereg_replace(" mot1 | mot2 | mo3 "," ",$texte); sans tenir compte de la casse,

Sinon preg est très bien adapté...
 
WRInaute impliqué
merci les gars,
en mettant des espaces ou des points, le "replace" marche comme je l'avais fait,
je pensais qu'il existait une fonction plus précise que le replace et moins galère.

merci pour votre participation
caro
 
Discussions similaires
Haut