Php jBBCode可选选项?
我使用bb代码解析 我想扩展CodeDefinition类来编写自己的asHtml函数,如中的示例所示 Mytag(参见代码片段)可能有一个选项,也可能没有。如果没有人,我希望它成为默认值 但是我必须执行setUseOption()来告诉jBBCode我的标记是否需要选项。它只能是真的或假的 如果我将设置为true,则不带选项[/mytag]的Php jBBCode可选选项?,php,bbcode,Php,Bbcode,我使用bb代码解析 我想扩展CodeDefinition类来编写自己的asHtml函数,如中的示例所示 Mytag(参见代码片段)可能有一个选项,也可能没有。如果没有人,我希望它成为默认值 但是我必须执行setUseOption()来告诉jBBCode我的标记是否需要选项。它只能是真的或假的 如果我将设置为true,则不带选项[/mytag]的[mytag]无法继续 如果我将设置为false,[mytag=value]选项[/mytag]将失败 有没有一种方法可以允许使用和不使用选项继续标记?即
[mytag]无法继续
如果我将设置为false,[mytag=value]选项[/mytag]
将失败
有没有一种方法可以允许使用和不使用选项继续标记?即,使选项成为可选选项。
并为其设置默认值
我还没有在地图上找到这个
代码片段:
<?php
class MyTag extends JBBCode\CodeDefinition {
public function __construct()
{
parent::__construct();
$this->setTagName("mytag");
$this->setUseOption(true);
}
...
查看中默认url和img bbcodes的定义。这些参数通过两次定义bbcode来提供可选参数:
/* [url] link tag */
$builder = new CodeDefinitionBuilder('url', '<a href="{param}">{param}</a>');
$builder->setParseContent(false)->setBodyValidator($urlValidator);
array_push($this->definitions, $builder->build());
/* [url=http://example.com] link tag */
$builder = new CodeDefinitionBuilder('url', '<a href="{option}">{param}</a>');
$builder->setUseOption(true)->setParseContent(true)->setOptionValidator($urlValidator);
array_push($this->definitions, $builder->build());
/*[url]链接标签*/
$builder=新的CodeDefinitionBuilder('url','');
$builder->setParseContent(false)->setBodyValidator($urlValidator);
数组推送($this->definitions,$builder->build());
/*[url]=http://example.com]链接标签*/
$builder=新的CodeDefinitionBuilder('url','');
$builder->setUseOption(true)->setParseContent(true)->setOptionValidator($urlValidator);
数组推送($this->definitions,$builder->build());
然后,解析器负责将bbcode的实例与适当的定义进行匹配。谢谢!这比我以前在解析之前预先添加默认选项要好得多。另外,在文档中看到这一点也很好(即,大约一个标签可以声明两次,有选项和没有选项)