BBcodes

ja das habe ich jetzt gemacht, aber der COde wird zwar ausgeben, aber in scharz und nicht in den hightlight Farben...
 
Hmm, sollte aber eigentlich farbig rauskommen.
Du rufst nicht zufaellig noch htmlentities() oder aehnliches nach replacetags() auf?
 
so sieht deine Funktion aus und die Verwende ich auch

PHP:
								<?php
								$messagetext = $tutorial;
								include("bbcodes.php");
        						$messagetext=htmlentities($messagetext);
        						$messagetext=replacetags($messagetext); 
        						$messagetext=nl2br($messagetext);
        						printf($messagetext);?>
 
Hm, sollte eigentlich kein Problem darstellen.
Man darf halt nur kein htmlentities() nach replacetags() machen, da ansonsten die ganzen schoenen Tags totgequotet werden.
Aber das hast Du ja nicht.

Da Du auch den Quellcode bekommst scheint die Funktion auch richtig zu arbeiten, jedoch ist Dein Source irgendwie unbunt, und das ist merkwuerdig.
 
Hmm, hab im Moment leider keine Moeglichkeit zum Testen, daher kann ich Dir leider zur Zeit nicht weiterhelfen.
Eigentlich sollte es so gehen wuerd ich sagen.
 
also ich habe es mri noch angeschaut und folgendes festgestellt. Wenn ich auf eine Seite, wo hightlight neutzt werden soll das erstemal drauf gehe, dann macht er es, aber sobald ich das zweite mal drauf gehe ist es wieder weg.
aber was auch noch auffältt ist, dass <? int sowas ähnlichen umgeformat wird :
$? oder so
 
also ich habe jetzt einen anderen Hightlight code der klappt. Nur wie kann ich den jetzt mir in deine Funktion einbauen:

PHP:
<?php
  function php_string($text){
    // php code säuber und highlighten
    $text = stripslashes($text);
    ob_start();
    highlight_string($text);  
    $text = ob_get_contents();
    ob_end_clean();

    // anzahl der zeilen feststellen
    $lines = explode("\n", $text);
    $numbers = "";

    // zeilennummern in $numbers speichern
    for ($i=0;$i<count($lines);$i++) {
        $numbers .= $i+1 ."<br />\n";
    }

    // das ganze in eine tabelle bauen
    $text = "<table cellpadding=\"1\" cellspacing=\"1\" border=\"1\">
               <tr>
                 <td valign=\"top\" width=\"20\" bgcolor=\"#eeeeee\"><code>".$numbers."</code></td>
                 <td valign=\"top\">".$text."</td>
               </tr>
             </table>";

    return $text;
}
$text = preg_replace("/\(php\)(.*)\(\/php\)/isUe", "php_string('\\1')", $text);

echo $text;
?>
 
Ich sagte doch, lass die Zeile mit dem htmlentities weg, dann klappt es. Allerdings werden dann keine HTML Tags mehr angezeigt, d.h. wenn jetzt jemand einen Code mit HTML Tags postet, werden diese vom Browser auch als solche interpretiert.

Zu deinem neuen Code.
Setzt ihn einfach an die Stelle, wo jetzt ein aktueller PHP Hightlight Code ist. Dann kannst du die entweder die Funktion mit dem herausgefiltertem Code aufrufen, also ohne das preg_replace oder du machst keione Funktion daraus und jagts den herrausgefilterten Teil direkt dadurch.
 
ich habe es so versucht:

PHP:
<?php
while ((strpos($messagetext,"(php)")>-1) && (strpos($messagetext,"(/php)")>-1))
{
	
    $text = stripslashes($text);
    ob_start();
    highlight_string($text);  
    $text = ob_get_contents();
    ob_end_clean();

    // anzahl der zeilen feststellen
    $lines = explode("\n", $text);
    $numbers = "";

    // zeilennummern in $numbers speichern
    for ($i=0;$i<count($lines);$i++) {
        $numbers .= $i+1 ."<br />\n";
    }
		
    // das ganze in eine tabelle bauen
    $text = "<center><table cellpadding=\"1\" cellspacing=\"1\" class=\"php\">
               <tr>
                 <td valign=\"top\" width=\"20\" bgcolor=\"#eeeeee\"><code>".$numbers."</code></td>
                 <td valign=\"top\">".$text."</td>
               </tr>
             </table></center>";
			
			$messagetext = $text;
	

?>

Nur es wir folgendes nur ausgeben:

ausf&uuml;hrlich

Also was ist jetzt wieder flasch bei mir?
 
Zurück