IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Supprimer une partie d'une chaîne de caractères


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Supprimer une partie d'une chaîne de caractères
    Bonjour,

    Je développe actuellement un portail multilingue en PHP, et pour une fonction j'ai besoin de récupérer une partie de l'url (fichier courant) avec ses variables.

    J'ai donc une variable $url = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'];

    En faisant un echo de cette variable, j'ai quelque chose du style /portail/index.php?module=guestbook&lang=fr

    Il peut aussi y avoir d'autres variables après, comme /portail/index.php?module=guestbook&lang=fr&page=2

    J'aimerais dans cette chaîne supprimer le &lang=fr, c'est-à-dire la variable lang et sa valeur, donc n'avoir plus que /portail/index.php?module=guestbook&page=2

    Merci de votre aide.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Pour PHP 5, il serait possible de procéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    unset($_GET['lang']);
    $url = $_SERVER['PHP_SELF'] . '?' . http_build_query($_GET);
    Ou alors ça doit pouvoir se faire à l'aide d'une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $url = $_SERVER['PHP_SELF'] . '?' . preg_replace('~(?:^|&)lang=[^&]*(?:&|$)~', '', $_SERVER['QUERY_STRING']);

  3. #3
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    trop fort ce julp
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ok merci beaucoup !

    J'ai utilisé l'expression régulière, et cela fonctionne très bien. J'utilise PHP 5 et la première méthode fonctionne aussi, mais j'ai besoin de conserver la variable lang pour d'autres utilisations, donc après la gestion des langues ne marchait plus.

    Aussi, si par erreur, il y avait plusieurs lang=nom (ex : /portail/index.php?module=guestbook&lang=fr&page=2&lang=de), comment modifier l'expression régulière pour qu'elle analyse toute la chaîne ? La première méthode le fait correctement, mais je ne peux pas m'en servir ici.

    Merci de votre aide.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Je peux vous proposer ces trois solutions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # 1
    $url = $_SERVER['PHP_SELF'] . '?' . preg_replace('~(?:^|&)lang=[^&]*(?:&|$)~', '&', $_SERVER['QUERY_STRING']);
     
    # 2
    $url = $_SERVER['PHP_SELF'] . '?' . http_build_query(array_diff_key($_GET, array('lang' => NULL)));
     
    # 3
    $url = $_SERVER['PHP_SELF'] . '?' . preg_replace('~(?<=^|&)lang=[^&]*(?=&|$)~', '', $_SERVER['QUERY_STRING']);

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Ok merci.

    J'ai opté pour la solution 2, qui fonctionne parfaitement. Les deux autres solutions rajoutent des & à chaque fois que je change la langue du site. Par exemple si je change 5 fois de langue sur une même page, l'url devient /portail/index.php?module=guestbook&&&&&lang=fr

    Par contre la solution 2 ne fonctionne-t-elle que avec PHP 5 ?

    En tout cas merci beaucoup, cela va beaucoup m'aider pour la suite de mon projet !

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par pregup
    J'ai opté pour la solution 2, qui fonctionne parfaitement. Les deux autres solutions rajoutent des & à chaque fois que je change la langue du site. Par exemple si je change 5 fois de langue sur une même page, l'url devient /portail/index.php?module=guestbook&&&&&lang=fr
    Oui Mais ne pouviez-vous pas le gérer au moment où cette partie de la query string est ajoutée ?

    Citation Envoyé par pregup
    Par contre la solution 2 ne fonctionne-t-elle que avec PHP 5 ?
    Oui puisque http_build_query est une fonction PHP 5. Pour PHP 4, il vous faudrait la réimplémenter (le package PEAR PHP_Compat le fait éventuellement pour vous).

    PS : de mémoire, pour obtenir un code (X)HTML valide il faudrait utiliser &amp; au lieu d'un simple &. Pour aller en ce sens, jouez sur le troisième paramètre de http_build_query, si nécessaire.

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Oui Mais ne pouviez-vous pas le gérer au moment où cette partie de la query string est ajoutée ?
    Ah oui désolé, j'ai pas fait attention à ça.

    Oui puisque http_build_query est une fonction PHP 5. Pour PHP 4, il vous faudrait la réimplémenter (le package PEAR PHP_Compat le fait éventuellement pour vous).
    Ok, c'était juste pour information. J'utilise PHP 5 donc c'est bon.

    PS : de mémoire, pour obtenir un code (X)HTML valide il faudrait utiliser &amp; au lieu d'un simple &. Pour aller en ce sens, jouez sur le troisième paramètre de http_build_query, si nécessaire.
    Oui c'est ce que je vais faire. J'avais lu ça aussi sur le XHTML.

    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2013, 15h57
  2. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo