2012-03-02 37 views
0

在其中一項更新中,phpBB刪除了用於包含顏色值的引號的選項,該選項用於代碼爲[color=value]...[/color]的BBCode。我的phpBB實現在很大程度上取決於這個功能的工作原理,因爲行業軟件已經被設計用於圍繞價值輸出報價。在phpBB顏色代碼中重新啓用行情顏色代碼

如何重新啓用此格式?

我試着修改includes/message_parser.php中的正則表達式來包含引號的可能性(如下所示)。這適用於大多數符號,但似乎在代碼中有某些特定的地方可以禁用引號。

以下是我在includes/message_parser.php中所做的更改。我改變:

function bbcode_init() 
    { 
     static $rowset; 

     // This array holds all bbcode data. BBCodes will be processed in this 
     // order, so it is important to keep [code] in first position and 
     // [quote] in second position. 
     $this->bbcodes = array(
      'code'   => array('bbcode_id' => 8, 'regexp' => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#ise' => "\$this->bbcode_code('\$1', '\$2')")), 
      'quote'   => array('bbcode_id' => 0, 'regexp' => array('#\[quote(?:="(.*?)")?\](.+)\[/quote\]#ise' => "\$this->bbcode_quote('\$0')")), 
      'attachment' => array('bbcode_id' => 12, 'regexp' => array('#\[attachment=([0-9]+)\](.*?)\[/attachment\]#ise' => "\$this->bbcode_attachment('\$1', '\$2')")), 
      'b'    => array('bbcode_id' => 1, 'regexp' => array('#\[b\](.*?)\[/b\]#ise' => "\$this->bbcode_strong('\$1')")), 
      'i'    => array('bbcode_id' => 2, 'regexp' => array('#\[i\](.*?)\[/i\]#ise' => "\$this->bbcode_italic('\$1')")), 
      'url'   => array('bbcode_id' => 3, 'regexp' => array('#\[url(=(.*))?\](.*)\[/url\]#iUe' => "\$this->validate_url('\$2', '\$3')")), 
      'img'   => array('bbcode_id' => 4, 'regexp' => array('#\[img\](.*)\[/img\]#iUe' => "\$this->bbcode_img('\$1')")), 
      'size'   => array('bbcode_id' => 5, 'regexp' => array('#\[size=([\-\+]?\d+)\](.*?)\[/size\]#ise' => "\$this->bbcode_size('\$1', '\$2')")), 
      'color'   => array('bbcode_id' => 6, 'regexp' => array('!\[color=(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")), 
      'u'    => array('bbcode_id' => 7, 'regexp' => array('#\[u\](.*?)\[/u\]#ise' => "\$this->bbcode_underline('\$1')")), 
      'list'   => array('bbcode_id' => 9, 'regexp' => array('#\[list(?:=(?:[a-z0-9]|disc|circle|square))?].*\[/list]#ise' => "\$this->bbcode_parse_list('\$0')")), 
      'email'   => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")), 
      'flash'   => array('bbcode_id' => 11, 'regexp' => array('#\[flash=([0-9]+),([0-9]+)\](.*?)\[/flash\]#ie' => "\$this->bbcode_flash('\$1', '\$2', '\$3')")) 
     ); 
... 

要使用的「顏色」匹配以下:

'color' => array('bbcode_id' => 6, 'regexp' => array('!\[color="?(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)"?\](.*?)\[/color\]!ise' => "\$this->bbcode_color('\$1', '\$2')")) 

我還可以嘗試這個功能重新添加到亞歷克?

回答

2

我相信phpBB的逃逸處理,這意味着你的正則表達式應該是這樣的前特殊的HTML字符:

'!\[color=(?:")?(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)(?:")?\](.*?)\[/color\]!ise'