Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
[MyCode] Bei Zeilenumbruch kein Parsen
#1
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
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#2
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.
Gruß Manuel
Bitte erst die Suche und die Doku benutzen.
Zitieren
#3
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)
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#4
Macht doch nichts XD
Freut mich zu hören, dass es geklappt hat. Dafür bin ich ja da^^
Gruß Manuel
Bitte erst die Suche und die Doku benutzen.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Link im Profilfeld und Zeilenumbruch clayton 67 19.831 02.10.2014, 16:31
Letzter Beitrag: MrBrechreiz
  Profilfelder Zeilenumbruch federleicht 0 1.195 04.09.2011, 09:13
Letzter Beitrag: federleicht
  Zeilenumbruch in Awards 2.0 einfügen alexa 4 2.237 27.08.2011, 16:59
Letzter Beitrag: alexa