重新启用phpBB颜色代码中的引号
在其中一次更新中,phpBB删除了重新启用phpBB颜色代码中的引号,php,regex,bbcode,phpbb3,Php,Regex,Bbcode,Phpbb3,在其中一次更新中,phpBB删除了[color=value]…[/color]BBCode在颜色值周围加引号的选项。我对phpBB的实现在很大程度上依赖于此功能的运行,因为行业软件的设计目的是在输出值周围加上引号 如何重新启用此格式 我已经尝试修改includes/message_parser.php中的正则表达式,以包含引号的可能性(如下所示)。这适用于大多数符号,但似乎代码中的其他地方有某种特定的东西禁止引号工作 下面是我在includes/message_parser.php中尝试的更改。
[color=value]…[/color]
BBCode在颜色值周围加引号的选项。我对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')"))
我还可以尝试将此功能重新添加到phpBB吗?我认为phpBB在处理之前会转义特殊的HTML字符,这意味着您的regexp应该是这样的:
'!\[color=(?:")?(#[0-9a-f]{3}|#[0-9a-f]{6}|[a-z\-]+)(?:")?\](.*?)\[/color\]!ise'