01.12.2008, 22:05
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:
Der dazugehörige Code der Plugin-Datei:
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
MfG Zwoetzen
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;
}
Verwendete MyBB-Version: 1.4.4
Würde mich freuen, wenn mir jemand helfen kann
MfG Zwoetzen
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
In der Informatik ignoriert man führende Nullen...