Проблема с SMF в phpBB3 bbcode

Привет, последние 3 года мой сайт использует SMF2, пришло время отказаться от него, я не буду вдаваться в подробности, но в любом случае я преобразовал все это в phpBB3, все работает нормально, пока вы не увидите цитату из старой системы, потому что есть различия, например, он не может разобрать кавычки

[quote="MitchaP":1ru0x694][/quote:1ru0x694] так будет выглядеть phpBB3, но smf выглядит как [quote="MitchaP"][/quote]

Я безуспешно пытался изменить файл bbcode.php, вот что у меня есть до сих пор, кстати, мое регулярное выражение находится на начальном уровне, если даже это :)

    $this->bbcode_cache[$bbcode_id] = array(
                    'str' => array(
                        '[/quote:$uid]' => $this->bbcode_tpl('quote_close', $bbcode_id),
          '[/quote]' => $this->bbcode_tpl('quote_close', $bbcode_id)
                    ),
                    'preg' => array(
                        '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')",
          '#\[quote(?:=\"(.*?)\")?\](.+)\[/quote\]#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')"
                    )
                );

person BigDave    schedule 19.05.2013    source источник
comment
Я просто хотел бы добавить, что я сделал свой первый блок кода при переполнении стека: D   -  person BigDave    schedule 20.05.2013


Ответы (1)


найти в include/bbcode.php

foreach ($bbcode_ids as $bbcode_id)
{
    switch ($bbcode_id)
    {

и замените случай 0: ниже

        case 0:
            if($this->bbcode_uid > 0)
            {
                $this->bbcode_cache[$bbcode_id] = array(
                    'str' => array(
                        '[/quote:$uid]' => $this->bbcode_tpl('quote_close', $bbcode_id)
                    ),
                    'preg' => array(
                        '#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise' => "\$this->bbcode_second_pass_quote('\$1', '\$2')"
                    )
                );
            }
            else
            {
                $this->bbcode_cache[$bbcode_id] = array(
                    'str' => array(
                        '[/quote]'  => $this->bbcode_tpl('quote_close', $bbcode_id)
                    ),
                    'preg' => array(
                        '#\[quote(?:="(.*?)")?\]((?!\[quote(?:=".*?")?\]).)?#ise'   => "\$this->bbcode_second_pass_quote('\$1', '\$2')"
                    )
                );                  
            }
        break;

phpbbphpbb3

person Damien Keitel    schedule 20.05.2013
comment
будет ли это соответствовать обеим версиям, пока я жду ответа, плохо добавлю и проверю :) - person BigDave; 20.05.2013
comment
Протестировано для обоих, я фактически отредактировал BLOB базы данных и удалил UID, чтобы показать, что он работает. - person Damien Keitel; 20.05.2013
comment
нет, все еще не повезло, но похоже, что это должно работать, просто я не понимаю, почему я вставил копию сообщения сюда pastebin .com/SGWnf0pZ просто так, если вам нужно, вы можете протестировать - person BigDave; 20.05.2013
comment
я только что выгрузил $this-›bbcode_uid, и он пуст, поэтому его defo добавляет это в массив, Edit: yep defo в массиве - person BigDave; 20.05.2013
comment
но если я сброшу $username, $quote в bbcode_second_pass_quote, я не получу никакого вывода - person BigDave; 20.05.2013
comment
кажется, битовое поле не видит цитату, но все же у вас работает - person BigDave; 20.05.2013
comment
я полностью запутался в этом - person BigDave; 20.05.2013
comment
ага, в строке viewtopic 1795 написано if ($row['bbcode_bitfield']) и, очевидно, его нет - person BigDave; 20.05.2013
comment
могу ли я спросить, каковы правила битового кода, может ли это быть чем угодно, например, если бы я обновил все строки случайным битовым кодом, это имело бы значение или это вызвало бы ошибки - person BigDave; 20.05.2013
comment
от дампа прошлых переменных до bbcode_second_pass немного дальше нет битового поля, у него есть возврат if !bitfield - person BigDave; 20.05.2013
comment
Я вставил вашу версию bbcode. Какие возвращаемые ошибки test.damienkeitel.com/bbcode.php.txt имеют правильную версию с моими правками - person Damien Keitel; 20.05.2013
comment
да, по-прежнему нет битового поля, так что это всегда произойдет if (!$this-›bbcode_bitfield) { // Удаляем uid из тегов, которые не были преобразованы в HTML if ($this-›bbcode_uid) { $message = str_replace(' :' .$this-›bbcode_uid, '', $message); } возврат; } - person BigDave; 20.05.2013
comment
странно, у меня это работает на моем test.damienkeitel.com/ viewtopic.php?f=2&t=1&p=43#p43 - person Damien Keitel; 21.05.2013
comment
добавил › 0 к первому оператору if, чтобы он правильно изменил правильный bbcode - person Damien Keitel; 21.05.2013
comment
я узнал, почему нужно было добавить это в viewtopic.php - person BigDave; 21.05.2013
comment
if(!$row['bbcode_bitfield']) { $message_parser = new parse_message($message); $message_parser-›parse_bbcode(); $row['bbcode_bitfield'] = $message_parser-›bbcode_bitfield; $строка['bbcode_uid'] = ''; } - person BigDave; 21.05.2013
comment
Кстати, спасибо за всю вашу помощь в этом, это поставило меня в тупик :) Кстати, ваш логин в Facebook будет общедоступным, а также будет ли он по-прежнему иметь возможность использовать обычную регистрацию, а также логин в FB. - person BigDave; 21.05.2013
comment
Также вы планируете сделать гугл :) я бы сделал их сам, но все остальное было бы последним в списке - person BigDave; 21.05.2013
comment
Мы не должны обсуждать это здесь. Перейдите на damienkeitel.com для получения дополнительной информации. - person Damien Keitel; 21.05.2013