Автор Тема: bbcode в coBreeder 2005  (Прочитано 3549 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kder

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
bbcode в coBreeder 2005
« : 03 Июля 2006, 00:13:53 »
Вобщем такое дело отци.. Незнаю что делать, прошу у вас помощи.
Использую скрипт coBreeder 2005 в локальной сети как WareZ портал. Юзеры могут оставлять ссылки на ftp и http, но это не очень практичн так как в нашей большой сети более распространено p2p нежели ftp, да и не все хотят ставить себе ftp сервер. Соот-но нужно чтобы скрипт мог обрабатывать magnet ссылки для p2p. Тоесть юзер вставляет magnet ссылку просто как текст а она после постинга будет смотреть как полноценная magnet ссылка.
Поспрашивал у знакомых говорят что это в BBCode нада рытся, но дело в том что я плохо его знаю.
Мои действия: Открыл фаил (в котором по видимому список BBCode, нашел строки где обрабатываются Url ссылки, но я незнаю что писать чтобы могли обрабатыватся magnet как норм ссылки для p2p)
Пример содержания (не всё содержимое ;) ) того файла привожу ниже:
// [URL]
      $this->bbcodes[\'standard\'][\'find\'][\'[url]\'] = \'#\\[url\\](.*)\\[/url\\]#esiU\';
      $this->bbcodes[\'standard\'][\'replace\'][\'[url]\'] = "\\$this->handle_bbcode_url(\'\\\\1\', \'\', \'url\')";
      $this->bbcodes[\'standard\'][\'recurse\'][\'url\'][0] = array(\'handler\' => \'\\$this->handle_bbcode_url\');
      //
      $this->bbcodes[\'standard\'][\'find\'][\'[url=\'] = \'#\\[url=("|"|\\\'|)(.*)\\\\1\\](.*)\\[/url\\]#esiU\';
      $this->bbcodes[\'standard\'][\'replace\'][\'[url=\'] = "\\$this->handle_bbcode_url(\'\\\\3\', \'\\\\2\', \'url\')";
      $this->bbcodes[\'standard\'][\'recurse\'][\'url\'][1] = array(\'handler\' => \'\\$this->handle_bbcode_url\');

Прошу вашей помощи, так как я ещё глуп для такого уровня ;)

Оффлайн kder

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
bbcode в coBreeder 2005
« Ответ #1 : 04 Июля 2006, 19:32:38 »
Жаль что незнаете

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
bbcode в coBreeder 2005
« Ответ #2 : 04 Июля 2006, 20:18:08 »
kder
Могу сказать, что:
1. Ты не тот кусок привел в качестве кода :)
2. Лучше было бы не ссылаться на скрипт (95% читающих он неизвестен), а показать, что имеешь на входе и что на выходе.

Instant solution:
- В первой строке во второй части пишешь регулярку для определения magnet-ссылки (use мозг и/или гугль)
- во второй - тупо ("N-chunk для url", "N-chunk для заголовка если, нужен", \'url\')
- третья такая же, разве что номер правила другой
- и во всех придумываешь id для правила (например, [magnet])

[off]Рыться в гугле я за тебя не буду, сорри.[/off]
LJ: Backslashed life (rss)

Оффлайн kder

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
bbcode в coBreeder 2005
« Ответ #3 : 04 Июля 2006, 22:08:47 »
Если я не ошибась то вверху написал bbcode для url а тут обработчик, помогите, скажите что и где писать чтоб magnet:? тоже обрабатывали, я пытался разобратся не получается

private function handle_bbcode_url($text, $link, $type = \'url\')
    {
        if (!trim($text))
        {
            return \'\';
        }

        $rightlink = trim($link);
        if (empty($rightlink))
        {
            // no option -- use param
            $rightlink = trim($text);
        }

        $rightlink = str_replace(\'"\', \'"\', $rightlink);

        if($type == \'url\' AND !preg_match(\'#^[a-z0-9]+://#si\', $rightlink))
        {
            $rightlink = \'http://\'.$rightlink;
        }

        if (!trim($link) OR $text == $rightlink)
        {
            $tmp = unhtmlspecialchars($rightlink);
            if (strlen($tmp) > $this->wordwrap)
            {
                $text = htmlspecialchars_uni(substr($tmp, 0, $this->wordwrap - 15) . \'...\' . substr($tmp, -15));
            }
        }

        // remove double spaces -- fixes issues with wordwrap
        $rightlink = str_replace(\'  \', \'\', $rightlink);

        // strip extra quotes from hyperlink
        $text = str_replace(\'\\"\', \'"\', $text);

        if ($type == \'url\')
        {
            // standard URL hyperlink
            return \'\'.$text.\'\';
        }
        else
        {
            // email hyperlink (mailto:)
            if (is_valid_email($rightlink))
            {
                return \'\'.$text.\'\';
            }
            else
            {
                // not a valid email - don\'t link it
                return \'\'.$text.\'\';
            }
        }
    }

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
bbcode в coBreeder 2005
« Ответ #4 : 05 Июля 2006, 12:06:15 »
kder
Второй кусок кода здесь не особо нужен. Так, логику понять.
Решение я тебе обрисовал.

Регулярку можно начать искать здесь: http://magnet-uri.sourceforge.net/
LJ: Backslashed life (rss)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28