Général

Les PCRE

Les POSIX

Pratique

Linux

Spécial php

Les billets de fred

La fonction ereg_replace (à partir de PHP3)


La syntaxe :
ereg_replace (motif de chaine, motif de remplacement, chaine sujet);

ereg_replace est sensible à la casse alors que eregi_replace ne l'est pas.
Si une occurence est trouvée, la chaîne sera retournée avec son motif de remplacement.
Dans le cas contraire, la chaîne d'origine sera retournée.

Attention :
Si une valeur numérique est utilisée dans le motif de remplacement, il se peut que vous n'obteniez pas le résultat voulu simplement parce que ereg_replace va interpréter le nombre comme une valeur ordinaire de caractère et nom comme une valeur numérique.
Pour éviter cela, il faut mettre la valeur dans une variable et l'entourée de simple quote.
exemple : $nombre='5';

Exemple :
$nombre='3';
$chaine="J'ai mangé trois pommes.";
$chaine=ereg_replace("trois",$nombre,$chaine);
echo$chaine;

// affichera : J'ai mangé 3 pommes.
?> Si $nombre avait été déclarée comme ceci $nombre=3; l'affichage aurait donné :
J'ai mangé pommes.

Exemples avec ereg(i)_replace

 
Récupérer une fin de chaine chiffrée, l'incrémenter de 1 et la reformer 
Niveau de compréhension :facile

$chaine='unlogin1';
$chaine1=ereg_replace("[^0-9]","",$chaine);
$chaine2=eregi_replace("[^a-z]","",$chaine);
echo$chaine2.($chaine1+1);

// la même chose avec eregi et un tableau
$chaine=eregi("([a-z]+)([0-9]+)",$chaine,$tablo);
echo$tablo[1].($tablo[2]+1);

// pour info, le même résultat obtenu avec substr

$num=substr($chaine,7);
$chaine=substr($chaine,0,7);
echo$chaine.($num+1);

Explication :

Simple, une chaine formée de 7 lettres suivie d'un chiffre.
On récupère la partie chiffrée avec ereg_replace en remplaçant par rien tout ce qui n'est pas un chiffre grâce au masque [^0-9]
Ensuite, on reprend la chaine du départ, on et fait le même traitement mais en enlevant les chiffres cette fois.
Il ne reste plus qu'a assembler les deux éléments en ajoutant une unité au nombre et afficher l'ensemble.

Ceci n'est qu'un exemple vous permettant de comprendre ereg_replace.
En effet, on aurait obtenu le même résultat simplement et rapidement avec un substr.

De même que pour ereg(i), je ne vais pas approfondir le sujet et multiplier les exemples sur cette fonction qui est moins utilisée que les PCRE.
ADAM Benjamin 2008 | Admin