Page 1 sur 1

Problème str_replace

Posté : 27 mai 2011, 16:32
par Jonathan
Bonjour,

Je me décide à vous demander de l'aide : ça fait plus d'une heure que j'essaye, en vain, d'utiliser cette fonction.

J'ai un nom de table qui se termine par "zz1" (choisi par mon prédécesseur), et je voudrais le faire sauter. J'utilise donc le code suivant :
if (substr($NomTable, -3) == 'zz1')
    {
		$NomTable = str_replace("zz1", "", $NomTable);

    }
... mais il ne marche pas.

J'en ai fait d'autres avant, qui marchent nickel :
if (substr($NomTable, 0, 3) == 'FK_')
    {
		$NomTable = str_replace("FK_M", "(FK)", $NomTable);

    }
... mais pour le "zz1", pas moyen d'y parvenir... Une idée ?

Re: Problème str_replace

Posté : 27 mai 2011, 16:43
par macgawel
mais il ne marche pas.
C'est un peu court...
Message d'erreur ? Lequel ?

Pour commencer, tu t'es assuré de passer dans la boucle ?
if (substr($NomTable, -3) == 'zz1') {
   $NomTable = str_replace("zz1", "", $NomTable);
   echo 'zz1';
}
Si tu n'as pas beaucoup de $NomTable, tu peux peut-être afficher la liste des substr($NomTable, -3), ça te donnerait une indication.
Pense aussi à vérifier la casse. Une majuscule mal placée et ton code ne fonctionne pas :roll:

Re: Problème str_replace

Posté : 27 mai 2011, 16:55
par Jonathan
Oui, après vérification, je passe bien dans la boucle. Désolé pour le manque de précision, mais je n'ai pas de message d'erreur, je constate juste que le "zz1" est toujours là, alors que je voudrais qu'il n'apparaisse plus...
J'ai vérifié à plusieurs reprise la casse, fait des tests avec autre chose que "zz1" (avec succès)...

Re: Problème str_replace

Posté : 27 mai 2011, 17:01
par Jonathan
Pfff c'est quoi ces conneries... En fait ça marche en ne mettant que ça :
$NomTable = str_replace("zz1", "", $NomTable);
Je me compliquais la vie avec le Substr()... J'ai l'impression que c'était à cause du "-" dans les conditions du Substr, soit mal supporté, soit je l'ai mal utilisé (j'opte pour cette option !)

Problème résolu ; merci...

Re: Problème str_replace

Posté : 27 mai 2011, 17:22
par sadeq
Utilises une expression régulière pour remplacer le texte que tu veux. Comme ça:
Exemple:
<?php
$NomTable = "matablezz1";
$NomTable = preg_replace("#(zz1)$#", "", $NomTable); // le filtre (zz1)$ recherche le mot (zz1) qui se trouve à la fin de la chaine le $ veut dire "à la fin" 
// et les # sont les délimiteurs de l'expression régulière
echo $NomTable;
?>
Pour plus d'infos voir la doc sur regexp sous php : http://www.commentcamarche.net/contents/php/phpreg.php3