8792 sujets

Développement web côté serveur, CMS

Bonjour,

j'aurai voulu modifier un chaine en php qui se termine par un caractere numerique de 0 à 500 par exemple et afficher à la place toujours 1

j'ai essaye str replace eregi replace mais comme honnetement je pige que dalle ca avance pas beaucoup Smiley ohwell

Grosso modo qd ma chaine se termine par &cat=25 ou 12... -> &cat=1

je cherche egalement à modifier la chaine si elle se termine par index.php la remplacer par "/" mais seulement quand elle se termine comme ca

je suis sur que c'est pas difficile mais j'ai beau essayer, je n'y arrive pas.
Merci à vous Smiley cligne
Il y a des dizaines de solus.
Ne sachant pas vraiment ce que tu fais, en voilà 2... au hasard :

$lien="mapage.php?pouet=machin&cat=125";

echo str_replace(substr(strrchr($lien, "="), 1),'1',$lien);

echo substr($lien,0,strrpos($lien,'=')+1),'1';
J'ai essayé les 2, la 1ere fonctionne mais partiellement c'est à dire
que pour

$lien="mapage.php?pouet=machin&cat=125";



echo str_replace(substr(strrchr($lien, "="), 1),'1',$lien);



echo substr($lien,0,strrpos($lien,'=')+1),'1';


ca va me donner &cat=1 par contre si j'ai juste pouet=machin dans l'url il va me la transformer en pouet=1. je voudrais juste que ca la transforme quand il y a cat=un chiffre en conservant dans ce cas pouet=machin.
Administrateur
Bonjour,

ton sujet n'a malheusement aucun rapport avec les standards du web.

La réponse de Bison correspond au problème que tu as posé dans le 1er message (et pour index.php --> / , il suffit d'adapter sa solution mais c'est le même principe).
De la même façon, pour ton 2ème message, il faut que tu cherches à droite la chaîne '&' et que tu vérifies si c'est bien 'cat' qui suit. Si 'cat' peut être en plein milieu des arguments alors pose mieux ta question parce que ça change tout ...
On pourrait le faire sans regex, mais le gain est insignifiant sur une simple chaîne :
if(preg_match('`cat=\d+$`',$lien))
{
echo str_replace(substr(strrchr($lien, "="), 1),'1',$lien);
}
else
{
echo $lien;
}

Par contre, si on est dans le cadre d'un boucle sur des milliers de valeurs...
Mais je ne crois pas.

On pourrait également le faire sans condition avec un preg_replace() mais pas vraiment d'intérêt.
Donc voilà, tu as de quoi faire.
Modifié par Bison (16 Feb 2007 - 15:51)