Повторное включение цитат в phpBB Color Code - PullRequest
0 голосов
/ 02 марта 2012

В одном из своих обновлений phpBB удалил опцию для [color=value]...[/color] BBCode, чтобы включить кавычки вокруг значения цвета. Моя реализация phpBB сильно зависит от работы этой функциональности, поскольку промышленное программное обеспечение было разработано для вывода с кавычками вокруг значения.

Как мне снова включить этот формат?

Я попытался изменить регулярные выражения в include / message_parser.php, чтобы включить возможность кавычек (как показано ниже). Это работает для большинства символов, но кажется, что где-то в коде есть что-то конкретное, что запрещает работу кавычек.

Вот изменения, которые я попробовал, включает / 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':

'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?

1 Ответ

2 голосов
/ 04 марта 2012

Я считаю, что phpBB перед обработкой экранирует специальные символы HTML, а это означает, что ваше регулярное выражение должно быть примерно таким:

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