Page 1 sur 1

probleme bbcode + syntaxhighlighter

Posté : 28 mars 2012, 22:43
par graffx
salut a tous!

j' ai un soucis que j' ai du mal a comprendre!

J' ai installé syntaxhighlighter mais il semble qu' il y a ait un conflit quelque part, je vais essayer de resumer en simple:

le bbcode:
<?php
function bbcode($texte)
{

$texte = preg_replace('`\[code\](.+)\[/code\]`isU', '<pre class="brush: php"> $1 </pre>', $texte); 

return $texte;
}
?>

puis l' affichage de mon code, j' inclus plus le bbcode:
 <?php 
	 echo bbcode($code['code']);
	?>
Riend ' extraordinaire, mais j' obtiens pourtant ceci:

http://hpics.li/82fb8b5

SI je remplace la fonction bbcode par la fonction highlight_string, ca fonctionne trés bien et m' affiche le code au complet mais sans mise en forme, bien evidemment.

Qui peut m' expliquer le probleme et surtout pourquoi ca coupe a ce moment sachant que le code originel dans la BDD a afficher est :

Page d' identification :

[code]
<?php 
session_start();

	  if(!isset($_SESSION['name'])) //--Si il n' y a pas de session (si on n' est pas connecté)
	  {
	  //--On affiche le formulaire de connection
	  echo '
      <table width="650" border="0" align="center" cellpadding="0" cellspacing="0"><tr>
          <td height="30" align="center" valign="middle">
          <form method="post" action="tt.php">
            Pseudo :
            <input name="pseudo" type="text" id="pseudo" style="width: 70px;" />
            Mot de passe :
            <input name="mdp" type="password" id="mdp" style="width: 70px;" />
            <input type="submit" name="submit" id="submit" value="OK" />
            <a href="fpass.php" class="header">Mot de passe oubli&eacute;</a>
            <a href="reg.php" class="header">Inscription</a>
          </form>
          </td>
        </tr>
      </table>';
	  }
	  else
	  {
	  //--Sinon (on est connecté) on affiche les infos et commande du membre (nom, lien profil, lien deconnection)
      echo '<table width="650" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td height="30" align="center" valign="middle">
              Bonjour, '.$_SESSION['name'].' <a href="profil.php" class="header">Mon compte</a> <a href="deco.php" class="header">D&eacute;connection</a>
            </td>
          </tr>
      </table>';
	  }
?>
	  
[/code]
Merci, je suis perdu!

Re: probleme bbcode + syntaxhighlighter

Posté : 29 mars 2012, 13:39
par graffx
Petit up les amis!

Re: probleme bbcode + syntaxhighlighter

Posté : 31 mars 2012, 20:35
par Calimero
SI je remplace la fonction bbcode par la fonction highlight_string, ca fonctionne trés bien et m' affiche le code au complet mais sans mise en forme, bien evidemment.

Qui peut m' expliquer le probleme et surtout pourquoi ca coupe a ce moment sachant que le code originel dans la BDD a afficher est :
Hello,

Le code HTML que tu souhaites afficher dans ta page se "mélange" au code HTML de la page (ou plus exactement, ton navigateur n'arrive plus à faire la différence entre les deux). Ce que tu cherches à faire est particulier, et il faut que tu comprennes bien cela. Avant d'afficher du code html il faut donc s'assurer qu'il est "inactif" pour justement que ton problème n'arrive pas :) Cela s'appelle l'échappement des caractères spéciaux.

La fonction highlight_string() de php fait ce travail pour toi, mais pas ton bbcode(). Il te faut simplement, en plus du bbcode, transformer les chevrons ( < et > ) qui sont les délimiteurs des balises HTML, en leurs entités HTML correspondantes ( < et > ), à l'aide de la fonction php str_replace() .

Ainsi, le code html que tu veux afficher sera vu par le navigateur comme du texte, et il n'y aura plus de mélange possible. :)