2012-03-02 74 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'