BB-Code ersetzen

sebbl

Grünschnabel
Hallo,

ich habe ein Problem mit dem ersetzen von BB-Codes.
Ich möchte den Code zwischen [ p h p ] und [ / p h p ] durch eine Tabelle ersetzen,
in welcher der gehighlightete Code steht..

Mein Code dafür:

PHP:
 $patter = "/\[php\](.*?)\[\/php\]/mse";
$replacement = "'<table height=\"40\" width=\"100%\" bgcolor=\"#fafff7\" cellpadding=\"5\" style=\"border:1px dashed silver;\"><tr><td width=\"8\">P<br>H<br>P</td><td bgcolor=\"#fafff7\" valign=\"top\" style=\"color:#0000CC;\">&lt;?php<br><div style=\"margin-left:11px;\">'.highlight_string('\\1').'</div>?></td></tr></table>'";
$text=preg_replace ($patter, $replacement, $text);

Dabei wird in $text der ganze Text mit BB-Codes übergeben.
Er soll nun Alles zwischen [ p h p ] und [ / p h p ] auslesen, highlighten und danach inclusive Tabelle wieder in den Text einfügen...

Jetzt hab ich das Problem, dass er zwar den Code highlightet aba nicht da einfügt wo er hin soll, sondern über die Tabelle und statt dem gehighliteten Code eine 1 setzt.

Vielleicht kann mir hier ja Jemand helfen. Wäre sehr nett.

Philip
 
PHP:
"'<div style=\"margin-left:11px;\">'.highlight_string('\\1').'</div>'"
Die Funktion highlight_string() gibt nichts zurück, also kannst du die nicht vorhandene Rückgabe von highlight_string() nicht mit einem String verknüpfen.
 
Ich möchte ja den Code zwischen [ p h p ] und [ / p h p ] highlighten.
Dafür muss ich doch zuerst den Code auslesen, ihn dann highlighten und nachher wieder an der gleichen Stelle einfügen, nur dass statt [ p h p ] und [ / p h p ] jetzt halt <table ...> und </table> steht.

Dafür würde ich ja eine Funktion benötigen, welche zuerst alles zwischen [ p h p ] und [ / p h p ] ausliest. Gibt es so eine Funktion?
 
PHP:
<?
$datei="test.php"; // Zu änderne Datei. 
$filed = fopen($datei,"r"); // Datei zum lesen öffnen. 
$stringfile = fread($filed,filesize($datei)); // Dateiinhalt in $stringfile einlesen.
fclose($filed); // Datei schliessen
$stringfile = str_replace('[pxp]',"&# 91;php&# 93;",$stringfile); //  Ersetze pxp durch php und  
$stringfile = str_replace('[/pxp]',"&# 91;/php&# 93;",$stringfile);// entferne das Leerzeichen hinter #! 
$zeichen = '.*&# 91;php](.*)&# 91;/php&# 93;.*'; // Zu suchende Zeichenkette in ASCII. Entferne das Leerzeichen hinter #!
$string = ereg_replace($zeichen,'\\1', $stringfile); // Zeichenkette in $string einlesen.
if ($string!=$stringfile){//nur fortsetzen, wenn ein PHP-Script vorhanden ist.
$strings = str_replace("'",'"',$string); // Schönheitsfehler: ' wird durch " ersetzt.
$stringneu = 'PHP-Script:<br><table border="1"><tr><td><? highlight_string('."'".'<? '.$strings.' ?>'."'".')?></td></tr></table>'; 
$stringfile=str_replace($string,$stringneu,$stringfile);//Neuen String in $stringfile einfügen. 
$stringfile = str_replace("&# 91;php&# 93;","",$stringfile); //  Ersetze pxp durch php und
$stringfile = str_replace("&# 91;/php&# 93;","",$stringfile);//  entferne das Leerzeichen hinter #! 
$file = fopen($datei,"w"); // Datei zum schreiben öffnen. 
fputs($file,$stringfile); // Datei mit Inhalt füllen. 
fclose($file);}; // Datei schliessen. 
header("Location: $datei"); // Zur Datei springen.
?>
Evtl. funktioniert es. ;-)
MfG
dirigent
 
Zuletzt bearbeitet:
Zurück