![]() |
Re: RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT
Zitat:
Code:
das [^code] kann dir glaube zum Verhängnis werden
(^\[[^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 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:
Das hier:
<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>
Code:
[Edit #2: Ich hab noch mal dran gebastelt]
[color=#ff0000]; Kommentar[/color]
#define ISPP "bla" #define ISPP "bla" [color=#ff0000]; Kommentar[/color]
Code:
erzeugt folgendes:
<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>
Code:
Wenn du also die Compiler-Statements, die am Anfang stehn IRGENDWIE overriden kannst dann leg eine ähnliche regex wie bei den singleline-omments an
[color=#009900]; Kommentar[/color]
[color=#ff0000]#define ISPP "bla" #define ISPP "bla"[/color] [color=#009900]; Kommentar[/color] Überzeugen darfst du dich hier: ![]() |
Re: RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT
Zitat:
[code=pre][Code] { ... jede Menge Pascal-artiger Code ... } [Code] // noch mehr davon [Files] ...
Code:
Deswegen dachte ich, dass ich per Zufall die Lösung gefunden hätte. :gruebel:
...
Zu den Kommentaren kann ich bisher nichts sagen, weil du deine PHP-Lösung selbst per "preg_replace" geschrieben hast. Problem: Ich benutze ![]() Na ja, wenn ich nicht vorwärts komme, dann suche ich mir einen anderen Highlighter. Irgendwo habe ich noch den Beautifer liegen. :lol: |
Re: RegEx != RegEx? PHP ereg liefert immer nur REG_BADRPT
Bin mal nich so und übersetz es in dieses Array-Format (womit sicher auch nur preg_replace gefüttert wird):
Code:
So müsst es GeSHi genau so formatieren, wie ich im Beispiel, gesetz dem Fall, dass dieses BEFORE / AFTER für Formatierungen ist ;)
2 => array(
GESHI_SEARCH => '^;.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '<span style="color:#090;">', GESHI_AFTER => '</span>' ) 3 => array( GESHI_SEARCH => '^#.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '<span style="color:#f00;">', GESHI_AFTER => '</span>' ) [Edit: noch mal zum nicht code ;) ] ersetz mal dieses:
Code:
durch dieses:
"/^\[code\](.*?)(^\[[^code]|\Z)/msi"
Code:
Du musst nur aufpassen dass du dir nur Match #1 also \\1 holst.
"/^\[code\](.*?)([\r\n]+\[(?!code)\]|\Z)/msi"
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz