#php #callback
#php #обратный вызов
Вопрос:
Я загрузил NBBC-parser (https://github.com/vanilla/nbbc/releases/tag/v2.2.3 ), и большинство функций работают. Но функция обратного вызова не работает. В $input у меня есть строка с прокруткой и функцией (пользовательской) границы. Но работает только функция прокрутки, и я вижу текст прокрутки.
Обратный вызов для пограничного тега не работает. Он не анализируется, и я вижу только текст.
Может быть, проблема в пространствах имен?
Есть ли ошибка в вызове / функции, или я должен искать проблему в другом месте?
<?php
require_once(__DIR__ . "/../vendor/autoload.php");
use NbbcBBCode;
/* Custom Callback-function for 'MyBorderFunction' */
function MyBorderFunction($bbcode, $action, $name,
$default, $params, $content) {
if ($action == 'BBCODE_CHECK') {
if (isset($params['color'])
amp;amp; !preg_match('/^#[0-9a-fA-F] |[a-zA-Z] $/', $params['color']))
return false;
if (isset($params['size'])
amp;amp; !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 "<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>";
?>