highlight_string was stimmt da nicht?

djandy

Mitglied
Hi,

kann mir jemand sagen was an diesem Code nicht stimmt?

PHP:
$text = preg_replace("/\[php\](.*?)\[\/php\]/si", "<table cellspacing=\"0\" align=\"center\" width=\"80%\"><td align=\"left\"><b>PHP:</b><br>'.highlight_string($1).'</td></table>", $text);

Bekomme immer

PHP:
'.highlight_string(<?php echo""; ?>).'

angezeigt! Werde noch bescheuert. Versuche es schon seit 2 Std. aber ich bekomme es einfach nicht hin.

Hoffe Ihr könnt mir helfen
Andy
 
  1. Damit Funktionen in der Ersatzzeichenkette ausgeführt werden, muss im regulären Ausdruck der Modifikator 'e' verwendet werden.
  2. [phpf]highlight_string[/phpf] gibt den hervorgehobenen Quelltext nicht zurück, sondern aus. Diese Ausgabe müsste entsprechend abgefangen werden (z.B. mit [phpf]ob_start[/phpf] etc.)
 
Könnten Sie mir freundlicher Weise genau sagen was Sie damit meinen?

Ein Beispiel oder die Lösung für mein Problem wäre sehr gut
 
Habe die Funktion in einer seperaten Datei (functions.php)

Der PHP Code soll aber in einer anderen Datei in einer Tabelle dagestellt werden!

Naja ich versuch mal weiter.
 
Probier mal Folgendes:
PHP:
<?php

	function highlight_php($data)
	{
		ob_start();
		highlight_string($data);
		$output = preg_replace('|<br\s*/?>|', '', preg_replace('|<font\s+color="(.+?)">(.*?)</font>|', '<span style="color:\\1">\\2</span>', ob_get_contents()));
		ob_end_clean();
		return $output;
	}

	…

	$text = preg_replace('|\[php\](.+?)\[/php\]|sie', '"<pre>".highlight_php("$1")."</pre>"', $text);

?>
Sonst kann ich dir nur meine PHP-Klasse empfehlen – selbsdefiniertes Farbschema inklusive.
 
Zurück