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 :

[Tableaux] Plusieurs remplacements dans une seule variable


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut [Tableaux] Plusieurs remplacements dans une seule variable
    Bonjour tout le monde,
    j'aurais une question à vous poser.
    Supposons que j'ai un long texte dans une variable appelée...$texte.
    Et supposons que je veuille remplacer "02" par "10"
    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $texte = str_replace('02','10',$texte);
    et maintenant, supposons que je veuille remplacer "02" par "05" dans le texte entre {I} et {II}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    // je ne sais pas faire :mouarf:
    et pour finir, imaginons que je veuille encore remplacer "02" par "03" dans le texte entre {i} et {ii}.
    Je ne sais pas si c'est possible...

    Je vous remercie de votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Mars 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Chef de projet MOA

    Informations forums :
    Inscription : Mars 2005
    Messages : 29
    Points : 40
    Points
    40
    Par défaut
    Bonjour,
    Regarde du côté de la fonction substr_replace().

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Bonjour,
    j'aimerais bien vous aider, mais je n'ai absolument rien compris. Qu'entendez-vous par dans le texte entre {I} et {II}?

    Cordialement,
    DaRiaN.

    Edit: ah, c'est ça que vous vouliez dire...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    merci ikkiphenix, je vais voir pour substr_replace();

    Darion, imaginons ce texte :

    $texte = "Bonjour, je m'appelle beji, j'ai 135 ans, je suis très vieux, je suis né le 02/03/1873. {I} Il était 02:15{II}.{i}J'ai vendu mes 02 vaches pour financer ma maison{i}."

    Dans "02/03/1873" , le 02 doit être remplacé par 10
    Dans " il était 02:15 ", le 02 doit être remplacé par 05
    Dans " mes 02 vaches", le 02 doit être remplacé par 03.

    Et pour finir, on fait un "echo $texte" pour voir si ça a marché.



    Edit : j'ai vu pour substr_replace, mais il faut que je sache l'emplacement pour pouvoir remplacer sinon ça fontionne pas. Mais le problème, c'est que je ne connais pas l'emplacement de "02" pour pouvoir le remplacer.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Points : 631
    Points
    631
    Par défaut
    Mais alors, que savez-vous? Vous voulez remplacer 02 dans la chaine, mais en sachant quoi exactement? Savez-vous au moins l'ordre et/ou le contexte?

  6. #6
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Pour le cas précis que tu as donné voici un traitement qui marche :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
     
     
    $texte = "Bonjour, je m'appelle beji, j'ai 135 ans, je suis très vieux, 
    je suis né le 02/03/1873.{I} Il était 02:15{II}.{i}J'ai vendu mes 02 vaches pour financer ma maison{ii}.";
     
    $chaine1 = substr($texte , 0, strpos($texte , '{I}'));
    $chaine2 = substr($texte , strpos($texte , '{I}') + 3, strpos($texte , '{II}') - strpos($texte , '{I}') - 3);
    $chaine3 = substr($texte , strpos($texte , '{i}') + 3, strpos($texte , '{ii}') - strpos($texte , '{i}') - 3);
     
     
    echo str_replace("02" , "10" , $chaine1);
    echo '<br><br>';
    echo str_replace("02" , "05" , $chaine2);
    echo '<br><br>';
    echo str_replace("02" , "03" , $chaine3);
    ?>

    ensuite à toi d'adapter en fonction de tes besoins. Je n'ai pas trop compris le but de ton traitement, peut être qu'il y a d'autre moyen de le faire (expressions régulieres ...)

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    En fait, ce serait pour mon forum,
    un membre écrit un long texte dans lequel il emploie des bbcodes. En temps normal, s'il écrit "ici", on affiche "ici" au final.
    Mais s'il écrit "ici" entre [ citation][ /citation] , j'aimerais que, par exemple, "ici" soit remplacé par "là-bas".
    Dans ce même texte, s'il écrit "ici" dans [ gras][ /gras], j'aimerais que "ici" soit remplacé par "par là - bas".

    En fait, pour voir si la citation et la mise en gras se trouvent dans le texte, je fais ici :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    // condition pour savoir si citation et gras existent dans le texte.
    if(preg_match("/[citation]/", "$texte") 
    AND preg_match("/[\/citation]/", "$texte") 
    AND preg_match("/[gras]/", "$texte") 
    AND preg_match("/[\/gras]/","$texte" ))
    {
    //une condition pour vérifier si la citation est présente
    if(preg_match("/[citation]/", "$texte") 
    AND preg_match("/[\/citation]/", "$texte"))
    {
    //fonction pour remplacer "ici" par "là-bas" entre [citation] et [/citation]
    }
    // une autre condition pour vérifier si la mise en gras est présente
    if(preg_match("/[gras]/", "$texte") 
    AND preg_match("/[\/gras]/ ","$texte"))
    {
    //fonction pour remplacer "ici" par "par là-bas" entre [gras] et [/gras]
    }
    }//on ferme la condition totale
     
    else //ni gras, ni citation se trouve dans le texte.
    //donc je continue à remplacer "bêtement"
    {
    //blablabla
    }
    //fin du remplacement.
    Voilà, j'espère que c'est plus clair. Je vous remercie encore de votre aide.

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Alors je te propose de faire la même chose qu'ici : Comment parser un bbcode ?

    Il te suffira de remplacer par tes valeurs.

    Au passage trop de if , pour le multi-remplacement tu peux utiliser un tableau.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    trop de if ? IL n'y en a que 3...
    j'ai vu pour la faq mais rien ne ressemble vraiment à mon problème
    ça fait plus d'une semaine que je cherche

  10. #10
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Ce n'est pas parce que c'est pas exactement ce que tu cherches que ce n'est pas la solution.

    Il suffit d'adapter à ton problème.

    Tu pourrais par exemple essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('#\[(.*)\].*\[/(.*)\]#Usi', '[$1]Ton texte[/$2]', $str);
    Il y a moyen d'améliorer.

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

Discussions similaires

  1. [MySQL] resultat mysql dans une seul variable (sorte de regroupement de plusieur resultat) ::
    Par rezareza dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 06/02/2009, 14h49
  2. Import de tableaux de plusieurs feuilles dans une seule
    Par Jibicas dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 22/04/2008, 08h40
  3. [Tableaux] plusieurs champs dans une meme variable
    Par crischprolch dans le forum Langage
    Réponses: 4
    Dernier message: 24/07/2007, 17h18
  4. Réponses: 3
    Dernier message: 06/04/2007, 10h09
  5. Réponses: 6
    Dernier message: 27/09/2006, 20h27

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