MyBB.de Forum
[MyCode] Bei Zeilenumbruch kein Parsen - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: [MyCode] Bei Zeilenumbruch kein Parsen (/thread-20993.html)



[MyCode] Bei Zeilenumbruch kein Parsen - Zwoetzen - 01.12.2008

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


RE: [MyCode] Bei Zeilenumbruch kein Parsen - Manuel - 01.12.2008

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.


RE: [MyCode] Bei Zeilenumbruch kein Parsen - Zwoetzen - 01.12.2008

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)


RE: [MyCode] Bei Zeilenumbruch kein Parsen - Manuel - 01.12.2008

Macht doch nichts XD
Freut mich zu hören, dass es geklappt hat. Dafür bin ich ja da^^