Zitat von
MathiasSimmack:
Damit geht es
Code:
"/^\[code\](.*?)(^\[[^code]|\Z)/
msi"
puh, sicher?
Code:
(^\[[^code]|\Z)
heisst doch umschrieben:
( beginne match
^ Zeilenanfang
\[ Zeichen: Eckige Klammer auf
[^code] keines der Zeichen c, o, d oder e (einzelnes Zeichen)
| oder
\Z end of subject oder Zeilenumbruch am Ende
) beende match
das
[^code] kann dir glaube zum Verhängnis werden
Was den Single-Line-Comment angeht...
[Edit #1: hier stand mal wieder Shredder, den ich vorsichtshalber entfernt hab]
Da kommt sich irgendwo irgend etwas in die Quere bei Geshi.
Ohne alles liefert:
Code:
<pre>
<?php
$source1 ='; Kommentar
#define ISPP "bla"';
$source2 ='#define ISPP "bla"
; Kommentar';
$GESHI_SEARCH = '^;.*$';
$GESHI_REPLACE = '\\0';
$GESHI_MODIFIERS = 'm';
$source1 = preg_replace("#$GESHI_SEARCH#$GESHI_MODIFIERS", "<span style='color:#f00;'>$GESHI_REPLACE</span>", $source1);
$source2 = preg_replace("#$GESHI_SEARCH#$GESHI_MODIFIERS", "<span style='color:#f00;'>$GESHI_REPLACE</span>", $source2);
echo $source1."\n\n".$source2;
?>
</pre>
Das hier:
Code:
[color=#ff0000]; Kommentar[/color]
#define ISPP "bla"
#define ISPP "bla"
[color=#ff0000]; Kommentar[/color]
[Edit #2: Ich hab noch mal dran gebastelt]
Code:
<pre>
<?php
$source1 ='; Kommentar
#define ISPP "bla"';
$source2 ='#define ISPP "bla"
; Kommentar';
$GESHI_SEARCH[] = '@^;.*$@m';
$GESHI_SEARCH[] = '@^#.*$@m';
$GESHI_REPLACE[] = "<span style='color:#090;'>\\0</span>";
$GESHI_REPLACE[] = "<span style='color:#f00;'>\\0</span>";
$source1 = preg_replace($GESHI_SEARCH, $GESHI_REPLACE, $source1);
$source2 = preg_replace($GESHI_SEARCH, $GESHI_REPLACE, $source2);
echo $source1."\n\n".$source2;
?>
</pre>
erzeugt folgendes:
Code:
[color=#009900]; Kommentar[/color]
[color=#ff0000]#define ISPP "bla"
#define ISPP "bla"[/color]
[color=#009900]; Kommentar[/color]
Wenn du also die Compiler-Statements, die am Anfang stehn
IRGENDWIE overriden kannst dann leg eine ähnliche regex wie bei den singleline-omments an
Überzeugen darfst du dich hier:
http://www.cruiser-dev.de/matsim.php