Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML][MySQL]Konwertowanie BBCODE na HTML
Forum PHP.pl > Forum > Przedszkole
Bellum
Mam pytanie, otóż chciałbym dowiedzieć się w jaki sposób bądź od czego zacząć by na mojej stronie www tagi BBCODE już umieszczone w artykułach w bazie danych, były poprawnie interpretowane jako kod HTML na stronie.
  1. [font="Georgia"][center][size="3"][color="#483D8B"][b]Tytuł artykułu i dalsza jego treść jest tagowana w bbcode[/b][/color][/size][/center]
Wszystko, to powinno być interpretowane jako HTML jednak nie wiem jak zabrać się do napisania takiego skryptu. Proszę o porady.

Artykuły wyciągam z bazy danych FORUM IPB 3+, być może istnieje możliwość by się jakoś podpiąć, o ile opiera się, to wyłącznie na MySQL i nie jest pochowane w plikach forum (w co ja osobiście wątpię) dlatego liczę na pomoc.

Pozdrawiam

thek
Musisz pomiędzy bazą a szablonem strony mieć konwerter bbcode2html smile.gif To zazwyczaj jakaś klasa, która przyjmuje tekst nie sformatowany, ze znacznikami bbcode, a wypluwa do szablonu już przetworzony do html.
Bellum
Cytat(thek @ 19.03.2010, 22:17:14 ) *
Musisz pomiędzy bazą a szablonem strony mieć konwerter bbcode2html smile.gif To zazwyczaj jakaś klasa, która przyjmuje tekst nie sformatowany, ze znacznikami bbcode, a wypluwa do szablonu już przetworzony do html.

A jakiś konkretny poradnik, chociażby malusieńkim przykładem? wtedy powinno mnie oświecić smile.gif
skowron-line
Cytat(Bellum @ 19.03.2010, 22:47:59 ) *
A jakiś konkretny poradnik, chociażby malusieńkim przykładem? wtedy powinno mnie oświecić smile.gif

A do guugla zajrzałeś.
Temat: klasa Zaawansowany parser bbcode php5
Bellum
Cytat(skowron-line @ 19.03.2010, 22:49:56 ) *

Nie rozumiem tego poradnika, dodatkowo nie potrzebuję zbędnych aplikacji na mojej stronie, prosiłbym o bardziej konkretny przykład, gdzie sam mógłbym zająć się napisaniem prostego skryptu do kilku tagów; Google natomiast przeszukuję i co może większość ludzi dziwić nie robię tego pobieżnie.
Wicepsik
preg_replace + wyrażenia regularne, str_replace

np.

  1. $tekst = str_replace('', '<b>', $tekst);
  2. $tekst = str_replace('', '</b>', $tekst);
Bellum
Cytat(Wicepsik @ 19.03.2010, 23:40:57 ) *
preg_replace + wyrażenia regularne, str_replace

np.

  1. $tekst = str_replace('', '<b>', $tekst);
  2. $tekst = str_replace('', '</b>', $tekst);

Dzięki osobiście znalazłem coś takiego: http://www.bbproject.net/2009/12/piszemy-parser-bbcode/
Niestety nie wiem jak to umieścić w tym kodzie, zrobiłem to w ten oto sposób:

  1. <?php
  2. function bbcode($text)
  3. {
  4. $patterns = array
  5. (
  6. '|\[b\](.*?)\[/b\]|i',
  7. '|\[i\](.*?)\[/i\]|i',
  8. '|\[u\](.*?)\[/u\]|i',
  9. '|\[color=([a-z]+)\](.*?)\[/color\]|i',
  10. '|\[size=([0-9]+)\](.*?)\[/size\]|i',
  11. '|\[url=(http://)?(.+?)\](.*?)\[/url\]|i'
  12. );
  13. $replacements = array
  14. (
  15. '<span style="font-weight: bold;">\1</span>',
  16. '<span style="font-style: italic;">\1</span>',
  17. '<span style="text-decoration: underline;">\1</span>',
  18. '<span style="color: \1;">\2</span>',
  19. '<span style="font-size: \1px;">\2</span>',
  20. '<a href="http://\2">\3</a>'
  21. );
  22. $text = str_replace("\n", '<br>', trim($text));
  23. $text = preg_replace($patterns, $replacements, $text);
  24. return $text;
  25. }
  26.  
  27. include"inc/mysql_access.php";
  28.  
  29. //-----------------------------------------Wyświetlanie Artów-------------------------------------------
  30.  
  31. $mysql = "SELECT t.title, p.post FROM posts p JOIN topics t ON p.topic_id = t.tid WHERE t.forum_id IN (11) AND p.author_id IN (2)";
  32. $wykonaj = @mysql_query($mysql) or die('<br />Niepoprawny wiersz bądź kolumna<br />'.mysql_error());
  33. echo '<table>';
  34. while ($wiersz = mysql_fetch_row($wykonaj))
  35. {
  36. echo '<tr><td style="background: #ccc; padding: 5px 5px 5px 5px;">'. $wiersz[0] .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. $wiersz[1] .'</td></tr>';
  37. }
  38. echo '</table>';
  39. mysql_close($connection);
  40. ?>
i teraz nie wiem co zrobić by pętla była parsowana.
  1. $text='<tr><td style="background: #ccc; padding: 5px 5px 5px 5px;">'. $wiersz[0] .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. $wiersz[1] .'</td></tr>';
  2. echo $text;

Tak nie działa, autor omówił ogólnie według mnie nie skupił się na istotnych szczegółach, być może nie jest to poradnik dla początkujących.
Wicepsik
  1. echo '<tr><td style="background: #ccc; padding: 5px 5px 5px 5px;">'. bbcode($wiersz[0]) .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. bbcode($wiersz[1]) .'</td></tr>';
Bellum
Cytat(Wicepsik @ 20.03.2010, 00:26:21 ) *
  1. echo '<tr><td style="background: #ccc; padding: 5px 5px 5px 5px;">'. bbcode($wiersz[0]) .'</td></tr>' . '<tr><td style="background: #e4ebf2; padding: 5px 5px 5px 5px;">'. bbcode($wiersz[1]) .'</td></tr>';

blink.gif widzę, że autor zamieścił podobną odpowiedź w artykule bbcode(): jakoś nic mi to nie powiedziało, w przeciwieństwie do twojego postu. Dzięki.


Mam jeszcze jedno pytanie w tej kwestii:

Skrypt ten nie zamienia kolorów wielkości oraz czcionki gdyż, tagi posiadają dodatkowo cudzysłów

  1. [font="Georgia"]questionmark.gif[/font] [color="#cccccc"]questionmark.gif?[/color] oraz [size="3"]questionmark.gif?[/size]
Skrypt w ogóle ich nie konwertuje. Co należy dodać bądź usunąć w skrypcie, który umieściłem w poprzednim poście by konwertował tagi, które zawierają cudzysłów.

EDIT: Znalazłem kolejną funkcję bardzo podobną do: Temat: Parser BBCode
Nie potrafię jednak dodać tagów parsujących odnośniki, kolory, czcionkę oraz wielkość czcionki:


http://wklej.org/id/300362/




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.