MyBB.de Forum

Normale Version: [MyCode] Bei Zeilenumbruch kein Parsen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi alle zusammen,

ich bin gerade dabei, einige MyCodes, die momentan noch über das ACP bereitgestellt werden, in ein Plugin auszulagern, um mehr Flexibilität zu bekommen.
Diese eigenen MyCodes haben dabei ungefähr die Struktur des Quote-Codes, also zB [warn=Autor]Text[/warn], welches dann zu einer entsrechenden Warnungs-Box umgesetzt wird.

Das Problem:
Sobald ein oder mehrere Zeilenumbrüche im Text drin sind, so wird der Code nicht mehr geparst.
Ich vermute, dass ich einen Fehler im Regulären Ausdruck habe, nur weiß ich nicht, welcher das ist und wie ich den behebe.

Beispiel:
Code:
[warn=Zwoetzen]Diese Box wird ordentlich erstellt.[/warn]
[warn=Zwoetzen]Diese Box hingegen
wird nicht als solche erkannt und bleibt unberührt.[/warn]

Der dazugehörige Code der Plugin-Datei:
PHP-Code:
function parse_myboxes($message) {
    global 
$theme$templates;
    
    if (
preg_match_all("#\[(hint|warn|comment)=(.*?)\](.*?)\[/\\1\]#i"$message$result))
    {
        for (
$i 0$i count($result[0]); $i++)
        {
            
$full    $result[0][$i];
            
$type    $result[1][$i];
            
$name    $result[2][$i];
            
$content $result[3][$i];
            
            switch (
$type) {
                case 
'hint':    $title "Hint by ".$name;     break;
                case 
'warn':    $title "Warning by ".$name;  break; 
                case 
'comment'$title "Comment by ".$name;  break;
            }
            
            eval(
"\$mybox = \"{$templates->get("mybox")}\";");
            
$message str_replace($full$mybox$message);
        }
    }

    return 
$message;

Anmerkung: Der einzufügende Code befindet sich im Template "mybox" und funktioniert auch soweit, da ja die Boxen ohne Zeilenumbrüche korrekt dargestellt werden.

Verwendete MyBB-Version: 1.4.4

Würde mich freuen, wenn mir jemand helfen kann Smile

MfG Zwoetzen
Ich könnte mich irren aber auf anhieb würde ich sagen du solltes #si am Ende des preg_match_all anstatt ein #i haben. Ansonsten einfach mal in die class_parser by Quote/PHP/Code un so kucken.
Ah, danke Manuel, genau das war der entscheidende Punkt: Kaum hab ich das "s" hinzugefügt, werden alle Boxen korrekt umgesetzt. Smile
Dabei dächte ich, genau den Ausdruck vom Quote/Code übernommen zu haben... Dodgy

(Jetz hab ich sonen riesen Post geschrieben, um zu erfahren, dass gerade mal ein "s" gefehlt hat Big Grin)

Edit: Hmm, irgendwie kam nen Fehler, aber Post wurde trotzdem abgeschickt... oO (Irgendwas von eine Datei sei nicht vorhanden)
Macht doch nichts XD
Freut mich zu hören, dass es geklappt hat. Dafür bin ich ja da^^