2014-12-05 38 views
0

我使用jBBCode進行bb代碼解析。jBBCode可選選項?

我想擴展CodeDefinition類來編寫我自己的asHtml函數的例子如documentation

Mytag(請參閱代碼片段)可能有一個選項,可能沒有。如果沒有人,我希望它成爲默認值。

但我必須這樣做setUseOption()告訴jBBCode我的標籤是否需要選擇與否。它只能是真的或假的。

如果我設置爲真,則[mytag]without option[/mytag]無法繼續。

如果我設置爲假,[mytag=value]with option[/mytag]失敗。

有沒有一種方法可以允許使用和不使用選項的前後標籤?即製作選項是可選的。 並設置它的默認值?

我還沒有在documentation中找到它。

的代碼片段:

<?php 

class MyTag extends JBBCode\CodeDefinition { 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->setTagName("mytag"); 
     $this->setUseOption(true); 
    } 
... 

回答

1

看看在DefaultCodeDefinitionSet.php默認的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()); 

分析器需要用適當的定義匹配的bbcode的實例的護理。

+0

謝謝!這比在我之前解析之前預先添加默認選項要好得多。另外,在文檔中看到這一點會很好(即關於一個標籤可以使用和不使用選項來聲明兩次) – Dmitry 2014-12-06 21:14:22