Page 1 sur 1

Opérations chaine de caractère

Posté : 12 janv. 2014, 20:00
par yoarf
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

Re: Opérations chaine de caractère

Posté : 12 janv. 2014, 23:06
par moogli
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>

@+

Re: Opérations chaine de caractère

Posté : 13 janv. 2014, 10:41
par sirakawa
ou une variable de session...

Re: Opérations chaine de caractère

Posté : 13 janv. 2014, 20:30
par yoarf
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

Re: Opérations chaine de caractère

Posté : 13 janv. 2014, 20:38
par yoarf
Ç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 ...

Re: Opérations chaine de caractère

Posté : 13 janv. 2014, 22:05
par sirakawa
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