preg_replace: Etwas in einem ersetzten String nochmals ersetzen

hi Nils,
Funktioniert leider nicht :(
Also es gibt keinen Fehler, aber das highlight_string wird auch auf der Seite angezeigt anstatt ausgeführt.
Gibt es keine Lösung das "\\1" in eine Variable zu kriegen?
 
Hallo

Du könntest es evtl. auch in die erste Funktion einfügen

PHP:
function highlight($makehighlight) {
$tablevor = "</font><br><div align=\"center\"><table width=\"550\" border=\"1\" bordercolor=\"#666666\" style=\"border: 1px;\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"whitesmoke\"><tr><td bgcolor=\"#666666\"><div align=\"center\"><font class=\"home-text\" color=\"white\"><b>CODE</b></font></div></td></tr><tr><td><div class=\"home-text\" align=\"left\">";
 $tablenach = "</div></td></tr></table></div><font class=\"home-text\">";

$makehighlight = str_replace ("public","<font color=blue>puuubliic</font>",$makehighlight);
return $tablevor.$makehighlight.$tablenach; }

und bei der 2. Funktion weglassen.
 
nein geht nicht weil:
1. Ich will nicht überall highlighten, nur innerhalb der code tags
2. so habe ich gar keine abfrage wo die code tags sind...
 
Wie ich die funktion nur innerhalb der Codetags aufrufen soll ist ja mein Problem!
Eine Highlight-Funktion zu schreiben ist kein Problem, nur wie ich sie auf den Bereich innerhalb der CodeTags anwenden kann...
 
Irgendwie habe ich nicht das Gefühl, als ob Du es probiert hättest?

PHP:
function highlight($makehighlight) {
$tablevor = "</font><br><div align=\"center\"><table width=\"550\" border=\"1\" bordercolor=\"#666666\" style=\"border: 1px;\" cellpadding=\"0\" cellspacing=\"0\" bgcolor=\"whitesmoke\"><tr><td bgcolor=\"#666666\"><div align=\"center\"><font class=\"home-text\" color=\"white\"><b>CODE</b></font></div></td></tr><tr><td><div class=\"home-text\" align=\"left\">";
$tablenach = "</div></td></tr></table></div><font class=\"home-text\">";
$makehighlight = str_replace ("public","<font color=blue>puuubliic</font>",$makehighlight);
return $tablevor.$makehighlight.$tablenach; } 

function makecode($msg)
{
   $msg = str_replace("]\n", "]", $msg);
   $match = array('#\[code\](.*?)\[\/code\]#se');
   $replace = array("highlight(stripslashes('$1'))");
   $msg = preg_replace($match, $replace, $msg);
   return $msg; 
 }

Dies sollte das ausführen, was Du möchtest. Einfach mal probieren. Ich habe es getestet. Die Tabelle stellt sich erst innerhalb der code-tags dar.
 
Das hat nun prima funktioniert, auch wenn ich es nicht ganz durchblicke.
Es hat aber wenig mit dem vorherig geposteten zu tun, das habe ich gründlich getestet.
Vielen Dank.
 
Hi

es war immer so gemeint, wie ich auch geschrieben habe.
Allerdings habe ich Dir den Html-Code nicht "verbessert". Es lässt sich nämlich noch zusammenfassen z.b. in CSS-Klassen. Das solltest Du unbeding machen. Weiterhin fehlen einige " Anführungszeichen im html etc.
 
Zurück