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 :

Operation sur une chaine de caractères


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut Operation sur une chaine de caractères
    Bonjour, je sollicite votre aide pour m'aider à optimiser mon code.
    Dans l'absolu, voici ce que je souhaite obtenir :

    1. je récupère l'adresse de navigation qui est de la forme http://www.monadresse.fr/index.php?page=test&a=0&v=1.

    2. selon une condition, j'incrémente a, selon une autre condition je décrémente a.

    3. en fonction de la condition, je remplace donc a = ? par a = ?+1 (condition1) ou a = ?-1 (condition2) comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $varUrl = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    if(condition1) {
    	if(eregi("a=5", $varUrl)) { $varUrl = str_replace("a=5" ,"a=4" ,$varUrl); }
    	else if(eregi("a=4", $varUrl)) { $varUrl = str_replace("a=4" ,"a=3" ,$varUrl); }
    	else if(eregi("a=3", $varUrl)) { $varUrl = str_replace("a=3" ,"a=2" ,$varUrl); }
    	else if(eregi("a=2", $varUrl)) { $varUrl = str_replace("a=2" ,"a=1" ,$varUrl); }
    	else { $varUrl = str_replace("a=1" ,"a=0" ,$varUrl); }
    	return $varUrl;
    } else {
    	if(eregi("a=0", $varUrl)) { $varUrl = str_replace("a=0" ,"a=1" ,$varUrl); }
    	else if(eregi("a=1", $varUrl)) { $varUrl = str_replace("a=1" ,"a=2" ,$varUrl); }
    	else if(eregi("a=2", $varUrl)) { $varUrl = str_replace("a=2" ,"a=3" ,$varUrl); }
    	else if(eregi("a=4", $varUrl)) { $varUrl = str_replace("a=4" ,"a=5" ,$varUrl); }
    	return $varUrl;
    }
    Mon code fonctionne correctement, mais j'aimerai le simplifier en remplaçant toute la partie if(eregi("a=5", $varUrl)) .. 4 ... 3 ... 2 ... 1 par :
    lorsque je trouve "a=" alors je remplace "a=chiffre" par "a=chiffre-1"

    Vous voyez ce que je veux dire, comme ça en 1 ligne je remplace les 5 if else if, et en plus je ne suis plus limité.

    Merci d'avance.

  2. #2
    Membre émérite
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Par défaut
    Resalut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $varUrl = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    $tab1 = array("a=5", "a=4", "a=5", "a=3", "a=2", "a=1");
    $tab2 = array("a=4", "a=5", "a=3", "a=2", "a=1", "a=0");
    if(condition1) {
                    str_replace($tab1 , $tab2 ,$varUrl);
    } else {
    	str_replace($tab2 , $tab1 ,$varUrl); 
    }
    	return $varUrl;

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    J'ai beau retourner le code dans tous les sens, ça fonctionne à l'incrémentation mais pas à l'inverse ! Je ne vois pas où ça plante ...

  4. #4
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste Développeur Web - Fizzup.com
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $varUrl = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    $tab1 = array("a=5", "a=4", "a=5", "a=3", "a=2", "a=1");
    $tab2 = array("a=4", "a=5", "a=3", "a=2", "a=1", "a=0");
    if(condition1) {
                    str_replace($tab1 , $tab2 ,$varUrl);
    } else {
          if(condition2){
    	str_replace($tab2 , $tab1 ,$varUrl); 
         }else{
           echo 'erreur';
        }
    }
    	return $varUrl;

    ? Et si le else de la condition une ne suffisait pas?

  5. #5
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Un code en passant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    $url = "http://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    $a   = $_GET['a'];
     
    if (condition1) ++ $a;
    else            $a = $a > 0 ? --$a : 0;
     
    print preg_replace('/&a=\d+/', '&a='.$a, $url);

Discussions similaires

  1. tr et sed sur une chaine de caractére
    Par elflamby dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 13/09/2007, 16h20
  2. Test sur une chaine de caractéres
    Par Je-cherche-pfe dans le forum C#
    Réponses: 3
    Dernier message: 04/09/2007, 23h44
  3. prèlèvements sur une chaine de caractères
    Par Nicobp dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2006, 01h14
  4. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 13h21
  5. [Débutant][String] Opérations sur une chaîne
    Par gandalf_le_blanc dans le forum Général Java
    Réponses: 8
    Dernier message: 08/06/2004, 11h59

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