Ik heb vandaag (na veel moeite) het voor elkaar gekregen om de NBBC-parser voor UBB-tags te downloaden via composer en werkend te krijgen. De basis werkt verder en de regel AddRule voor 'scroll werkt', ik zie een mooie marquee tekst voorbij komen.
Echter krijg ik de callback-functie voor MyBorderFunction niet aan de praat. Deze wordt niet geparsed. Mis ik iets in de functie, gezien dit script met namespaces werkt? Of ligt het probleem dieper?
<?php
require_once(__DIR__ . "/../vendor/autoload.php");
use Nbbc\BBCode;
/* Custom Callback-function for 'MyBorderFunction' */
function MyBorderFunction($bbcode, $action, $name,
$default, $params, $content) {
if ($action == 'BBCODE_CHECK') {
if (isset($params['color'])
&& !preg_match('/^#[0-9a-fA-F]+|[a-zA-Z]+$/', $params['color']))
return false;
if (isset($params['size'])
&& !preg_match('/^[1-9][0-9]*$/', $params['size']))
return false;
return true;
}
$color = isset($params['color']) ? $params['color'] : "blue";
$size = isset($params['size']) ? $params['size'] : 1;
// return the content
return "<div style=\"border: {$size}px solid $color\">$content</div>";
}
$input = "[scroll]tralalala[/scroll][border color=red size=3]This text is in a medium red border![/border]"
. "[border size=10]This text is in a fat blue border![/border]"
. "[border color=green]This text is in a normal green border![/border]";
$bbcode = new BBCode();
$bbcode->AddRule('border', Array(
'mode' => BBCODE_MODE_CALLBACK,
'method' => 'MyBorderFunction',
'class' => 'block',
'allow_in' => Array('listitem', 'block', 'columns'),
));
$marquee = Array(
'simple_start' => '<marquee>',
'simple_end' => '</marquee>',
'class' => 'inline',
'allow_in' => Array('listitem', 'block', 'columns', 'inline', 'link'),
);
$bbcode->AddRule('scroll', $marquee);
// Parse the UBBtags.
$output = $bbcode->Parse($input);
print "<div class='bbcode'>$output</div>";
?>
2.475 views