Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Parsowanie bbcode z vbulletin?
Forum PHP.pl > Forum > Przedszkole
ZLoM
Witajcie, mam mały problemik, mam taki skrypt o to skrypt:

  1. <?php  
  2.     $forumid=3;
  3.    $howmany=5;
  4.      $query="SELECT threadid,title,postusername FROM thread WHERE forumid=$forumid ORDER BY threadid DESC LIMIT $howmany";
  5.      $list_t=mysql_query($query);
  6.  
  7.      while ($temat=mysql_fetch_array($list_t))
  8.      {
  9.         $psql = mysql_query("SELECT pagetext , dateline FROM post WHERE threadid=".$temat['threadid']." ORDER BY postid ASC LIMIT 1");
  10.         $post=mysql_fetch_array($psql);
  11.         $news['pagetext'] = $post['pagetext'];
  12.         $news['title'] = $temat['title'];
  13.         $news['threadid'] = $temat['threadid'];
  14.         $news['postusername'] = $temat['postusername'];
  15.         $news['date'] = date ("d.m.y H:i" ,$post['dateline']);
  16.        
  17.          print"
  18.          blabalbal
  19.  
  20.        ";
  21.  
  22.  
  23.     }
  24.    ?>


Jego zadaniem jest pobieranie nazwy, id,treści tematu itp. z wybranego działu na forum, wszystko jest ok, prócz tego iż skrypt nie "pobiera" bbcodów z vB, niestety nie mam bladego pojęcia jak mogę to poprawić, słyszałem coś o prasowaniu bbcodów z vB niestety nie wiem jak mam to zastosować w moim skrypcie
RafaelX
za duzo kombinowania (jeśli to nie jest strona vb) lepiej napisać prosty parser bbcode oparty na wyrażeniach regularnych
ZLoM
Mógłbyś jakoś jaśniej albo jakiś przykład?
Dopiero raczkuje w tych sprawach ;d
RafaelX
np takie cos:
  1. <?php
  2. $msg= 'jakis text';
  3. $msg = preg_replace("#(.*?)#si", '<span style="color: 1">2</span>', $msg);
  4. echo $msg;
  5. // wyswietli:
  6. // <span style="color:red">jakis text</span>
  7. ?>
ZLoM
Niestety z tym chyba będzie więcej "zabawy", niby ktoś mi podał taki kod:
  1. <?php
  2. chdir('./forum');
  3.   require_once('./global.php');
  4.   require_once('./includes/class_bbcode.php');
  5.   chdir('./..');
  6.   $bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
  7. ?>


Niestety po jego użyciu pojawia się błąd

Kod
Unable to add cookies, header already sent.
File: /home/abcd/domains/strona.pl/public_html/newsy.php
Line: 1


Jakieś pomysły jak go poprawić czy coś aby zadziałało?
RafaelX
przd tym dodaj moze
  1. <?php
  2. ?>
ZLoM
Niestety, bez zmian sadsmiley02.gif
Mephistofeles
Później trzeba jeszcze ob_flush. Może masz pliki kodowane UTF-8, ale z BOMem?
Fifi209
Do wypowiedzi kolegi o buforowaniu (ob_start()) dodam jeszcze zmień kodowanie pliku na iso lub ascii
ZLoM
Winą tego błędu oczywiście była niechciana spacja.

Teraz niestety wywala mi inny błąd, niestety nie wiem dokładnie co on może oznaczać, oraz jak go naprawić?

Kod
Fatal error: Call to a member function query_read() on a non-object in /public_html/forum/includes/class_bbcode.php on line 581


Linia z numerem 581:
  1. <?php
  2. $smilies = $this->registry->db->query_read("
  3. ?>



Linie od 576 do 614 pliku class_bbcode:

  1. <?php
  2. // we have to get the smilies from the database
  3.            DEVDEBUG('querying for smilies');
  4.  
  5.            $this->registry->smiliecache = array();
  6.  
  7.            $smilies = $this->registry->db->query_read("
  8.                SELECT *, LENGTH(smilietext) AS smilielen
  9.                FROM " . TABLE_PREFIX . "smilie
  10.                ORDER BY smilielen DESC
  11.            ");
  12.            while ($smilie = $this->registry->db->fetch_array($smilies))
  13.            {
  14.                if (!$do_html)
  15.                {
  16.                    $find = htmlspecialchars_uni(trim($smilie['smilietext']));
  17.                }
  18.                else
  19.                {
  20.                    $find = trim($smilie['smilietext']);
  21.                }
  22.  
  23.                // if you change this HTML tag, make sure you change the smilie remover in code/php/html tag handlers!
  24.                if ($this->is_wysiwyg())
  25.                {
  26.                    $replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"" . htmlspecialchars_uni($smilie['title']) . "\" smilieid=\"$smilie[smilieid]\" class=\"inlineimg\" />";
  27.                }
  28.                else
  29.                {
  30.                    $replace = "<img src=\"$smilie[smiliepath]\" border=\"0\" alt=\"\" title=\"" . htmlspecialchars_uni($smilie['title']) . "\" class=\"inlineimg\" />";
  31.                }
  32.  
  33.                $sc["$find"] = $replace;
  34.  
  35.                $this->registry->smiliecache["$smilie[smilieid]"] = $smilie;
  36.            }
  37.        }
  38.  
  39.        return $sc;
  40.    }
  41. ?>
b4x
"Winą tego błędu oczywiście była niechciana spacja." - a może przez przypadek usunąłeś coś więcej niż spację? winksmiley.jpg

#edit spróbuj zamienić

$this->registry->db->query_read

na

$vbulletin->db->query_read
ZLoM
Cytat(b4x @ 19.03.2009, 22:15:51 ) *
"Winą tego błędu oczywiście była niechciana spacja." - a może przez przypadek usunąłeś coś więcej niż spację? winksmiley.jpg

#edit spróbuj zamienić

$this->registry->db->query_read

na

$vbulletin->db->query_read


Niczego prócz spacji nie usunąłem na 100%

Co do tego kodu, to niestety, bez zmian.
Wydaje mi się jednak że to ze skryptem który podałem w 1 poście jest nie tak ( może czegoś mi tam brakuje? ), a nie z plikiem class_bbcode, aczkolwiek mogę się mylić...

sciana.gif

.
b4x
Nie nudzi Ci się tak "podbijanie" codziennie tematu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.