Problème str_replace

Eléphant du PHP | 142 Messages

27 mai 2011, 16:32

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 ?

Mammouth du PHP | 672 Messages

27 mai 2011, 16:43

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:

Eléphant du PHP | 142 Messages

27 mai 2011, 16:55

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

Eléphant du PHP | 142 Messages

27 mai 2011, 17:01

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

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

27 mai 2011, 17:22

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
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène