mrepox
Erfahrenes Mitglied
Hi Leutz,
ich benutze eine BBcode Klasse geschrieben von SEB aus dem Traum-Projekt Forum.
Problem bei dieser Klasse ist, das alle Hochkommata vom Parser mit backslashs versehen werden.
Die Regel für CODE scheint mir hier auch nicht in dieser Hinsicht korrekt aushgearbeitet worden zu sein.
Da mir die Funktionsweise von dem parsen total unklar ist, benötige ich von euch Hilfe bei der Änderung dieser Funktion.
Wäre super wenn ihr eine Idee dazu habt.
Hier der Code:
ich benutze eine BBcode Klasse geschrieben von SEB aus dem Traum-Projekt Forum.
Problem bei dieser Klasse ist, das alle Hochkommata vom Parser mit backslashs versehen werden.
Die Regel für CODE scheint mir hier auch nicht in dieser Hinsicht korrekt aushgearbeitet worden zu sein.
Da mir die Funktionsweise von dem parsen total unklar ist, benötige ich von euch Hilfe bei der Änderung dieser Funktion.
Wäre super wenn ihr eine Idee dazu habt.
Hier der Code:
PHP:
<?php
function bbcode_replace($string)
{
while($old_string != $string)
{
$old_string = $string;
$string = preg_replace_callback('{\[(\w+)((=)(.+)|())\]((.|\n)*)\[/\1\]}U', 'bbcode_callback', $string);
}
return $string;
}
function bbcode_callback($matches)
{
$tag = trim($matches[1]);
$inner_string = $matches[6];
$argument = $matches[4];
switch($tag)
{
case 'b':
case 'i':
case 'u':
$replacement = "<$tag>$inner_string</$tag>";
break;
case 'code':
$replacement = '<b>Code:</b><pre style="font-size:12px;width:450px;overflow:auto;">' . $inner_string . '</pre></div>';
break;
case 'TABLE':
$replacement = '<br /><span style="height: 10px;border-left:#8c8c8c 1px solid;border-top:#8c8c8c 1px solid;border-bottom:#8c8c8c 1px solid;padding:2px;background: #bdcbff; font-size: 0.9em;font-weight:bold;color: #626262;">Code:</span><span style="height: 10px;width: 50px;font-size: 0.9em;border-right:#8c8c8c 1px solid;border-left:#8c8c8c 1px solid;border-top:#8c8c8c 1px solid;border-bottom:#8c8c8c 1px solid;background:#e6ffcd;padding:2px;font-weight:bold;"><pre>' . $inner_string . '</pre></span><br />';
break;
case 'Summary':
$replacement = '<b>Auszug:</b><p style="background:#e4e4e4;width:500px;height:300px;overflow:auto; border:1px solid #8c8c8c;">' . $inner_string . '</p>';
break;
case 'color':
$color = preg_match("[^[0-9a-fA-F]{3,6}$]", $argument) ? '#' . $argument : $argument;
$replacement = '<span style="color:' . $color . '">' . $inner_string . '</span>';
break;
case 'EMAIL':
$address = $argument ? $argument : $inner_string;
$replacement = '<a href="mailto:' . $address . '">' . $inner_string . '</a>';
break;
case 'img':
$replacement = '<img src="' . $inner_string . '" />';
break;
case 'size':
if (is_numeric($argument) && $argument > 5 && $argument < 64)
{
$replacement = '<span style="font-size:' . $argument . 'px;">' . $inner_string . '</span>';
}
break;
case 'QUOTE':
$replacement = '<b>Zitat:</b><hr />' . $inner_string . '<hr />';
break;
case 'LIST':
$replacement = '<ul><li>' . $inner_string . '</li></ul>';
break;
case 'url':
$url = $argument ? $argument : $inner_string;
$replacement = '<a href="' . $url . '" >' . $inner_string . '</a>';
break;
default: // unknown tag => reconstruct and return original expression
$replacement = '[' . $tag . ']' . $inner_string . '[/' . $tag .']';
break;
}
return $replacement;
}
?>