htmlentities außerhalb der php-Tags

Luzie

Erfahrenes Mitglied
Hallo

ihr müsst mir mal kurz einen Tipp geben. Mit dieser Funktion lasse ich einen highlight-string erzeugen. Das ist auch kein Problem.

Wie könnte ich es aber jetzt anstellen, den Text, der außerhalb der php-Tags[] steht zu encodieren z.b. mit htmlentities(), so dass der Scriptcode, der innerhalb der php-Tags steht, nicht berücksichtigt wird?

Ich probiere da jetzt schon seit geraumer Zeit hin- und her.

Wie macht ihr das?

PHP:
function php_string($a) 
{ 
$tag = false; 
    if (!strstr($a, "<?") && !strstr($a, "?>")) { 
	$a = "<?\n".$a."\n?>";
          $tag = true; 
   } 
  $a = stripslashes($a); 
  $a = str_replace("\\\"","\"",$a); 
  $a = trim($a); 
  
  ob_start(); 
  highlight_string($a);   
  $a = ob_get_contents(); 
  ob_end_clean(); 
    // ...und wieder entfernen 
    if ($tag) { 
      $a = str_replace("&lt;?", "", $a); 
      $a = str_replace("?&gt;", "", $a); 
      } 
return "<i>Code:</i><div style=\"width:800px;overflow:auto;margin-left:10px;background-color:#f5f5f5;border:1px outset;\">$a</div>"; 
} 
function bbcode($msg) 
{ 
$msg = preg_replace("/\[php\](.*)\[\/php\]/esiU","php_string('$1')", $msg); 
$msg = eregi_replace("\[B\]([^\[]+)\[/B\]", "<b>\\1</b>", $msg); 
$msg = str_replace( "\n","<br/>",$msg); 

  return $msg; 
}
 
Hallo

erstmal Danke für die Antwort.

Leider liegt es bei mir etwas anders. Ich will das html ja nicht rausfiltern bzw. ersetzen. Es soll nur nicht ausgeführt werden. Problem ist, dass dies in der highlight_string-Funktion auch funktioniert nur in übrigen Text wird es ausgeführt.

Bsp. wie hier

dies ist der Rest Text <b> und fett </b>

und dies ist ein phpscriptcode
PHP:
<? echo "Hallo Welt" ?>

Bei mir wird halt bold als und fett ausgeführt und nicht wie hier jetzt im Beispiel nur die <b> und </b>s dargestellt.
 
Außerdem könnte auch das hier noch helfen:

PHP:
$msg = str_replace('<', '&lt;', $msg);
$msg = str_replace('>', '&gt;', $msg);
 
Huhu

danke für die liebgemeinten Tipps. Aber das habe ich alles schon durchgetestet. ;)

Das Problem ist, wenn ich diese Funktionen verwende, werden auch die Eingaben, die in den php-Tags stehen, sozusagen "encodiert", d.h., nicht mehr farblich dargestellt. Ist ja auch klar, sie laufen letztlich durch die gleiche Funktion.

Man muss den Teil, der in den php-Tags steht, unberücksichtigt lassen und da ist der Haken. So wie: Gebe mir alles über die Funktion htmlentities() aus, außer das, was in den bbTags steht.

Naja, ich werde nochmals was tüffteln. :-)
 
Zurück