Version complète: sur le forum Webmaster Hub : ereg_replace ou preg_replace ?
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
scarabeuz
Bonjour à tous, je cherche le moyen de supprimer plusieur mot d'un texte

donc dans mon exemple il y aurait :

CODE
$texte = "lever le couteau sur l'assiette";
$inutile = array("le","la","les","lo","lu");

$new_text = eregi_replace($inutile, " ", $texte);



Seulement au lien d'avoir comme résultat :

"lever couteau sur l'assiette";

j'ai

"ever couteau sur l'assiette";

J'ai essayé avec preg_replace et j'ai le même résultat dry.gif
Anonymus
$texte = "lever le couteau sur l'assiette";
$inutile = array("le","la","les","lo","lu");
$new_text = eregi_replace($inutile, " ", $texte);

Ca, c'est ton code. Or eregi_replace prend comme parametres : string,string, et string.
Or tu lui transmet array,string et string. Donc il répond : ca marche pas, je retourne la phrase telle quelle.
A ce propos, j'ai comme résultat de new_text :
"lever couteau sur l'assiette";

Essaie un truc :
CITATION
$texte = "lever le couteau sur l'assiette";
$inutile = array("le","la","les","lo","lu");
foreach($inutile as $key=>$value){
$texte = eregi_replace($value, "", $texte);
}

echo "<br>".$texte;


A+, Anonymus.
exabs
CODE
$texte = "lever le couteau sur l'assiette";
$tab1 = array(" le "," la "," les "," lo "," lu ");
$tab2 = array("","","","","");
$new_text = str_replace($tab1, $tab2, $texte);
scarabeuz
CITATION(exabs @ vendredi 10 octobre 2003, 13:26)
CODE
$texte = "lever le couteau sur l'assiette";
$tab1 = array(" le "," la "," les "," lo "," lu ");
$tab2 = array("","","","","");
$new_text = str_replace($tab1, $tab2, $texte);



merci beaucoup j'ai un petit penchant pour ta solution et pour mon cas je modifirais par

CODE
str_replace($tab1, " ",$texte);


:up:
Anonymus
:nono: parce que tu veux faire le minimum de lignes ?
alors voilà :
$texte = "lever le couteau sur l'assiette, la où les petits lu sont à l'eau (non, pas à lo, à leau";
$inutile = array("'le'","'la'","'les'","'lo'","'lu'");
$newtexte=preg_replace($inutile,"",$texte);
echo $newtexte;

voilà, A+, Anonymus..
scarabeuz
oui, enfaite je preferais sa solution car j'ai encore un peu de mal à utiliser les "foreach" blush.gif
Anonymus
foreach ==>>

<?
$tableau[0]="a";
$tableau[1]="b";
$tableau[2]="c";
$tableau[3]="d";

foreach($tableau as $cle=>$valeur){
echo "<br>clé=".$cle;
echo"<br>valeur=".$valeur;
}
?>
donc on voit bien que la variable $tableau contient 4 valeurs. La valeur 'a' est à la position 0, autrement dit :
la clé 0 contient la valeur a
la clé 1 contient la valeur b
etc.
Il est donc possible de dire :
pour chaque paire 'clé=>value de 'tableau'
autrement dit :
foreach ($tableau as $key=>$value)

on écrit la clé, puis la valeur, autrement dit,
echo $key
echo $value
donc :
foreach ($tableau as $key=>$value){

// code...
}

Voilà.
scarabeuz
c'est bon, je viens de comprendre ( apres avoir relu plusieur fois biggrin.gif )

J'ai reussi à faire un petit truc sympas à l'instant.

Merci bien je sens que sa va bien me servir
Anonymus
Pour finir j'ajouterais que l'avantage de foreach sur le for($a=... est le suivant :

Dans un tableau, les index se suivent :
$array[0]="quelque chose";
$array[1]="autre chose";
$array[2]="encore autre chose";
$array[3]="ca c'est pas grand chose";
$array[4]="et caetera";

donc, on peut dire :
for($a=0;$a<count($array);$a++){
echo "<br>".$array[$a];
}

Seulement, on peut avoir besoin d'effacer l'entrée d'un tableau :
unset ($array[3]); // puisque c'est pas grand chose

On se retrouve donc avec le tableau suivant :

$array[0]="quelque chose";
$array[1]="autre chose";
$array[2]="encore autre chose";
$array[4]="et caetera";

et la boucle for ne marchera plus :
for($a=0;$a<count($array);$a++){
echo "<br>$a ".$array[$a];
}
affichera l'erreur suivante :
Undefined offset: 3
autrement dit, l'entrée $array[3] n'existe pas ...

Avec foreach, le probleme est différent
Foreach ne regarde pas le numéro de l'index, il dit simplement :
Pour chaque entrée
Autrement dit, s'il en manque une, on passe à la suivante.
Pour foreach, le tableau
$array = array(0=>"quelque chose",1=>"autre chose",2=>"encore autre chose",4=>"et caetera");
sera parcouru ainsi :
foreach($array as $key=>$value){
echo "<br>$key ".$value;
}
et affichera :

0 quelque chose
1 autre chose
2 encore autre chose
4 et caetera

Autre avantage du foreach : Il n'a pas besoin de numéro d'index :
$array = array("couleur"=>"rouge","type"=>"break","puissance"=>"400");
foreach($array as $key=>$value){
echo "<br><b>".$key."</b> : ".$value;
}

sortira :

couleur : rouge
type : break
puissance : 400

Voilà un bref passage sur les avantages du foreach par rapport au for.

Anonymus.
Beatnykk
merci je viens d'apprendre un truc :
le foreach m'a toujours semblé plus simple à utiliser que le for, qui me faisait des erreurs php.

maintenant je sais pourquoi : je devais avoir une liste discontinue à traiter smile.gif !!
bon chang mais ché bin choure !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.