Aller au contenu

ereg_replace ou preg_replace ?


Sujets conseillés

Posté

Bonjour à tous, je cherche le moyen de supprimer plusieur mot d'un texte

donc dans mon exemple il y aurait :

$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 <_<

Posté

$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 :

$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.

Posté
$texte = "lever le couteau sur l'assiette"; 
$tab1 = array(" le "," la "," les "," lo "," lu ");
$tab2 = array("","","","","");
$new_text = str_replace($tab1, $tab2, $texte);

Posté (modifié)
$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

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

:up:

Modifié par Neoboot
Posté

: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..

Posté

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à.

Posté

c'est bon, je viens de comprendre ( apres avoir relu plusieur fois :D )

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

Merci bien je sens que sa va bien me servir

Posté

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.

Posté

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 :) !!

bon chang mais ché bin choure !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...