Problem mit BB Code

kcyberbob

Erfahrenes Mitglied
Hallo,

ich habe folgendes Problem.
Ich will alles was zwischen dem Tag PHP /PHP (die Tags natürlich in Eckigenklammern) farbig hervorheben.
Bis lang siehr mein Script so aus:

PHP:
<?
function php_string($text)
{ 
  $text = stripslashes($text); 
  
  ob_start(); 
  highlight_string($text);  
  $text = ob_get_contents(); 
  ob_end_clean(); 

  return $text; 
}


function bbcode($text) 
{
  $text = preg_replace("/\[ PHP ](.*)\[\ /PHP \]/esiU", "php_string('$1')", $text); 
return $text;
}


if (!isset($action)) {
?>
<form name="form1" method="post" action="test.php?action=send">
  <textarea name="text" cols="70" rows="15" id="text"></textarea>
  <br>
  <br>
  <input type="submit" name="Submit" value="Senden">
</form>

<?
}
if ($action == "send") {
   $text = bbcode($text);
   echo $text;
}
?>


Ich will aber, das der Code auch farbig dargestellt wird, wenn ich nicht diese Zeichen verwende <? ?>.

Wie kann ich das machen?
Außer dem bekomme ich in dem Script bislang noch eine falsche ausgabe.

Folgendes gebe ich in das Textfeld ein:
PHP:
php //natürlich in eckigen klammern
<? echo "test"; ?>
/php //natürlich in eckigen klammern

Das kommt raus:
PHP:
<? echo "test\"; ?>

Im Prinzip will ich es so wie hier in diesem Forum.

Gruß kcyberbob

PS: Würde mich freuen, wenn ihr mir weiterhelfen könnt.
 
Einzufügen in der Funktion "php_string($text)" nach "stripslashes()":
PHP:
if (substr(trim($text), 0, 2) != '<?') {$text = "<?php\n".$text."\n?>";}
 
Super das geht jetzt schon mal aber als Ausgabe kommt immer noch ein / nach dem wort test.
Wie bekomme ich das weg?
PHP:
<?php

echo "test\"; 

?>

Gruß kcyberbob
 
Zurück