[RESOLU] Opérations chaine de caractère

Eléphanteau du PHP | 16 Messages

12 janv. 2014, 20:00

Bonjour,

Je souhaiterai faire un lien pour passer mon site de anglais à français et inversement qui fonctionne sur n'importe quelle page et redirige vers la page courante.

Disons je suis sur la page : http://127.0.0.1/Site/index.php?langue= ... ique&cat=2
La variable $langue indique la langue.

Nous avons :
$adresse_courante = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
puis sur cette adresse courante, je souhaterais remplacer le "fr" par "en".

Je peux utiliser la fonction suivante pour retourner la position de langue (qui varie) : stripos($adresse_courante,'langue')+1;
mais comment fais-je pour remplacer une sous chaine dans une chaine commençant à la position N de longueur L par une autre sous-chaine (afin de remplacer de "fr" par "en" et inversement).

Merci d'avance.

Yoann

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 janv. 2014, 23:06

salut,

substr est ton amie :)


Je pense que ton système est bancale, tu peux simplement ajouter un bout script pour la gestion de la langue que tu inclus sur toute les pages (si tu as un système de template mutualisé sur toute les pages c'est super simple.

par exemple
<?php
if(!empty($_GET['langue'])) {
// traitement du changement de langue
}
ensuite les liens <a href="?langue=fr" title="passer en français"><img src="drapalFr.png" /></a>

@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

13 janv. 2014, 10:41

ou une variable de session...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 16 Messages

13 janv. 2014, 20:30

Hello,

Oui mais en faisant cela :
<a href="?langue=fr" title="passer en français"><img src="drapalFr.png" /></a>

j'arrive sur : http://127.0.0.1/Site/index.php?langue=fr
alors que je voudrais arriver sur : http://127.0.0.1/Site/index.php?langue= ... ique&cat=2

c'est pour cela je voudrais récupérer l'adresse courante et remplacer juste la variable langue

Eléphanteau du PHP | 16 Messages

13 janv. 2014, 20:38

Ça marche avec cela :
			$adresse_courante = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
			echo '<a href="?langue=fr'.substr($adresse_courante,stripos($adresse_courante,'langue')+9).'">Lien</a>';
Mais je pense qu'il y a peut être plus simple ...

Mammouth du PHP | 2278 Messages

13 janv. 2014, 22:05

Dans la première page, tu donnes le choix de la langue
<?PHP
session_start();
$langue_choisi = "fr"; //pour s'assurer qu'on a une valeur
on supppose la langue choisie par un select ou autre
$_SESSION['langue'] = $langue_choisie;
et tu construis ton url par concaténation
$suite = "http://lycee_papillon.fr/chanson?langue= $langue_choisie& ce que tuveux
Dans les autres pages
<?PHP
session_start();
$langue_choisi = $_SESSION['langue_choisie'];

Note fondamentale :
session_start() doit intervenir avant tout affichege
mais tu peux écrire
<?PHP
session_start();
$langue_choisi = $_SESSION['langue_choisie'];
?>


et reprendre le php plus loins
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD