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 :

preg_replace assez complexe [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 77
    Points : 463
    Points
    463
    Par défaut preg_replace assez complexe
    Bonjour,

    Je poste ce message car je galère pas mal sur un problème assez génant, et j'avoue que pour une fois, je sèche complètement.

    Enfaite je suis entrain de coder un BBCode pour la colorisation synthaxique de Java, en utilisant la libraire geshi.
    Jusqu'à la, tout va bien, et j'ai réussi à regler quelques petits problèmes sans trop de difficultés. Mais je me suis aperçu que si il y a plusieurs codes Java, le premier est affiché partout à la place des autres.

    J'explique comment je procède actuellement. Je récupere le code java contenu entre les balises BBCode de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("/\[java\](.*?)\[\/java\]/is", $texte, $java);
    Ensuite je manipule la variable $java[1] contenant le code (je suppose que si il y a plusieurs codes java sur la meme pages, ils sont contenus dans $java[2], $java[3] et ainsi de suite non ?

    Puis une fois que j'ai finis les manips sur le code, j'obtiens une variable contenant le code sortie par Geshi, c'est à dire avec la colorisation synthaxique.

    Puis j'effectue un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte = preg_replace("/\[java\](.*?)\[\/java\]/is", "".$jv."", $texte);
    Il est donc logique que tous les contenus entre toutes les balises BBCode java de la variable $texte seront remplacée par la même valeur, celle du code de la première utilisation de la balise.

    Mais voilà, j'ai essaié plusieurs trucs, mais je vois pas trop comment faire pour manipuler individuellement on peut dire, chaque balise [java], et les remplacer par le propres contenus formatés, qui sont tous différents des autres.

    Merci d'avance pour votre précieuse aide .

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    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
    15
    <pre><?php
     
    $s = 'texte [java] code [1] [/java] texte [java] code [2] [/java] texte';
     
    preg_match_all('#\[java\](.*?)\[/java\]#', $s, $matches);
    var_dump($matches);
     
    $search  = array();
    $replace = array();
    foreach($matches[1] as $match) {
        $search[]  = '[java]'.$match.'[/java]';
        $replace[] = '<b>'.$match.'</b>'; //<--- traitement sur code java
    }
    echo str_replace($search, $replace, $s);
    ?>

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Avril 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 77
    Points : 463
    Points
    463
    Par défaut
    Merci mille fois . Cela marche parfaitement .
    Je mets le sujet en résolu.

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

Discussions similaires

  1. Dessin assez complexe
    Par diden138 dans le forum Langage
    Réponses: 4
    Dernier message: 04/06/2008, 09h30
  2. combobx assez complexe
    Par stéphanie123 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/05/2008, 22h53
  3. Réponses: 6
    Dernier message: 21/01/2008, 12h09
  4. Réponses: 13
    Dernier message: 12/10/2007, 09h09
  5. Curseur dynamique assez complexe...
    Par yiuche dans le forum Delphi
    Réponses: 7
    Dernier message: 20/03/2007, 11h55

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