Partage
  • Partager sur Facebook
  • Partager sur Twitter

Coloration syntaxique

    31 août 2006 à 5:06:58

    Bonjour à tous :)
    J'ai un problème avec un codage de regex:
    je n'arrive pas à mettre en couleur correctement la syntaxe des balises de type "<img />", lorsque j'écrit 2 balises de ce type d'affilée, tout se colore d'une même couleur comme s'il ne prenait en compte que le premier "<" et le dernier "/>"...
    Voici le code que j'ai écrit pour cette regex:

    <?php
    if (isset($_POST['message']))
    {
    $texte = htmlentities($_POST['message']);

    $texte = preg_replace('#(&lt;.+&gt;|&lt;)(.+)(&lt;.+&gt;|/ ?&gt;)#isU', '<span class="bal_html">$1</span><span class="black">$2</span><span class="bal_html">$3</span>', $texte);

    $texte = nl2br($texte);

    echo $texte;
    }
    ?>

    Ah euh oui, je précise quand-même (je vais peut-être vous faire un affront mais on ne sait jamais :-° ): "&lt;" = "<" et "&gt;" = ">"

    Comment vous avez fait pour colorer les syntaxes de ce site?

    Edit: et lorsque je n'ai qu'une balise de type "<img />", je n'arrive pas à colorer le "img" qui suit le "<"... vous pourriez m'aider, svp? :euh:
    • Partager sur Facebook
    • Partager sur Twitter
      31 août 2006 à 5:33:22

      Pourquoi tu ne met pas directement le nom des balises dans la regex ? Tu veux savoir comment on colore le code PHP, la réponse est dans la section " Tutos des Zér0s " de ce fameux site : http://www.siteduzero.com/tuto-3-5232-1-coloration-syntaxique-du-code-php.html
      • Partager sur Facebook
      • Partager sur Twitter
        31 août 2006 à 5:44:08

        Non non, j'voudrais savoir comment faire pour tout type de langage, pas seulement le PHP.
        En fait, je l'avais vu, ce tuto, mais ça m'aide pas beaucoup lorsqu'il s'agit de codes HTML et CSS, je pense.

        Citation : cem

        Pourquoi tu ne met pas directement le nom des balises dans la regex ?


        Tu veux dire quoi par "le nom des balises"?
        • Partager sur Facebook
        • Partager sur Twitter
          31 août 2006 à 5:49:59

          Tu peux alors utiliser Geshi mais il est très lourd en ressources, il consomme quoi. Autrement tu peux essayer de faire des colorateurs faits maisons mais hélas c'est plus dur.

          Pour le nom des balises, voici un exemple :
          $contenu = preg_replace('!\&lt;gras\&gt;(.*)\&lt;/gras\&gt;!isU', '<span class="gras">$1</span>', $contenu);
          $contenu = preg_replace('!\&lt;italique\&gt;(.*)\&lt;/italique\&gt;!isU', '<span style="font-style: italic;">$1</span>', $contenu);
          $contenu = preg_replace('!\&lt;image\&gt;(.*)\&lt;/image\&gt;!isU', '<img src="$1" style="border: none;" alt="Image" />', $contenu);
          $contenu = preg_replace('!\&lt;souligne\&gt;(.*)\&lt;/souligne\&gt;!isU', '<span style="text-decoration: underline;">$1</span>', $contenu);


          Ici j'ai bien mis les balises

          <gras></gras>
          <italique></italique>
          <image></image>
          <souligne></souligne>
          • Partager sur Facebook
          • Partager sur Twitter
            31 août 2006 à 6:25:12

            Salut,

            Extream:
            Non non, j'voudrais savoir comment faire pour tout type de langage, pas seulement le PHP.

            Ben, pour PHP ou pour un autre langage, c'est le même principe, c'est juste la couleur qui change.
            example:
            pour PHP, entre guillemete, ça va être rouge et pour xHTML, ça va être bleu, c'est pas plus compliqué que ça :)
            Je te conseille pour cela de faire une fonction ;)
            • Partager sur Facebook
            • Partager sur Twitter
              31 août 2006 à 16:22:28

              Est-ce que tu pourrais me donner un exemple de fonction, parce que je ne vois pas comment faire avec une fonction :(
              • Partager sur Facebook
              • Partager sur Twitter
                31 août 2006 à 16:38:09

                function parser($contenu) {

                         $contenu = preg_replace('!\&lt;gras\&gt;(.*)\&lt;/gras\&gt;!isU', '<span class="gras">$1</span>', $contenu);
                         $contenu = preg_replace('!\&lt;italique\&gt;(.*)\&lt;/italique\&gt;!isU', '<span style="font-style: italic;">$1</span>', $contenu);
                         $contenu = preg_replace('!\&lt;image\&gt;(.*)\&lt;/image\&gt;!isU', '<img src="$1" style="border: none;" alt="Image" />', $contenu);
                         $contenu = preg_replace('!\&lt;souligne\&gt;(.*)\&lt;/souligne\&gt;!isU', '<span style="text-decoration: underline;">$1</span>', $contenu);
                         return $contenu;

                }


                Et pour l'utiliser
                <?php
                echo parser(htmlentities('<gras>test en gras</gras>'));
                ?>
                • Partager sur Facebook
                • Partager sur Twitter

                Coloration syntaxique

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown