Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Parsowanie bbcode


Bellum

Rekomendowane odpowiedzi

Witam, otóż posty w bazie danych IPB3 zawierają również kod bbcode(o ile wcześniej używaliśmy tagów podczas tworzenia tematów, ja użyłem) a wyświetlanie ich poza forum wiąże się z wyświetlaniem widocznego kodu.

Przeszukuję strony polsko-angielskie i na odwrót i nie mogę znaleźć odpowiedniego skryptu parsującego bbcode.

W bazie danych są następujące tagi, które chciałbym sparsować a napotykam problem:

[color="#FFA500"][/color]
[font="Georgia"][/font]
[size="3"][/size]

Poniższy skrypt zawiera parsowanie podstawowych tagów pogrubienie, pochylenie, wyśrodkowanie itp;

Jednak brakuję dla mnie tych istotnych, jak kolor, czcionka, odnośnik.

Reasumując nie potrafię dodać nowych tagów do skryptu, zaznaczam, że w bazie danych IPB3 bbcode zawiera cudzysłów i stąd problem z wieloma skryptami gdyż parsują one tagi bez cudzysłowowa.

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

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

A nie możesz parsować klasami IP.Board. Zainicjuj ipsregistry, stwórz zmienną i przeparsuj.

(teraz nie ma mnie w domu, więc nie mogę Ci tego napisać z palca)

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

A nie możesz parsować klasami IP.Board. Zainicjuj ipsregistry, stwórz zmienną i przeparsuj.

(teraz nie ma mnie w domu, więc nie mogę Ci tego napisać z palca)

Ale skrypt ten zapewne nie siedzi jedynie w bazie danych a gdzieś w plikach w forum ipb, ja operuję na bazie danych IPB bo zmieniam serwer i na localhost nie wgrywałem forum, korzystam jedynie z bazy danych. Jednak jeżeli jest tak jak mówisz, to mógłbyś po krótko opisać a konkretnie troszeczkę szerzej z przykładami.

@Oczywiście wtedy gdy będziesz miał dostęp i możliwości.

Edytowane przez Bellum
Odnośnik do komentarza
Udostępnij na innych stronach

No musisz mieć na tym serwerze IP.Board. Jeśli nie masz, to moje rozwiązanie siłą rzeczy nie jest dobre. :D

Mam na localhost kopię bazy danych z mojego forum, wystarczy, że włożę odpowiedni plik, który to odpowiada za parsowanie i przepuszczę go przez odpowiednią funkcję. Potrzebuję tylko nazwy tego pliku.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Komentarz z pliku: admin/sources/classes/bbcode/core.php

* Basic usage examples
* <code>
* $parser           =  new parseBbcode( $registry );
* 
* # If you wish convert posted text to store in the database
* $parser->parse_smilies = 1;
* $parser->parse_bbcode  = 1;
* $parser->parsing_section = 'your section key';
* $bbcode_text = $parser->preDbParse( $_POST['text'] );
* 
* # If you wish to display this content
* $parser->parse_html    = 0;
* $parser->parse_nl2br   = 1;
* $parser->parsing_section = 'your section key';
* $parser->parsing_mgroup = 'member group id of poster';
* $parser->parsing_mgroup_others = 'member other group ids of poster';
* $ready_to_print        = $parser->preDisplayParse(  $bbcode_text  );
* 
* # If you wish to convert already converted BBCode back into the raw format
* # (for use in an editing screen, for example) use this:
* $raw_post = $parser->preEditParse( $parsed_text );
* 
* # Of course, if you're using the rich text editor (WYSIWYG) then you don't want to uncovert the HTML
* # otherwise the rich text editor will show unparsed BBCode tags, and not formatted HTML. In this case use this:
* $raw_post = $parser->convert_ipb_html_to_html( $parsed_text );
* </code>
*
*/

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

A w jaki sposób dopisać to do skryptu, który podałem w pierwszym poście? gdyż, to co podałeś nie mówi mi przez co mam przepuścić kod.

Czy kod parsujący znajduję się w bazie danych? jeżeli tak to wystarczyło by skonstruować skrypt oparty o zawarte tam parametry, czy się mylę?

Oraz pytanie w skrypcie w pierwszym poście zastanawiam się w jaki sposób skonstruować tag, koloru, który jest w cudzysłowach.

Edytowane przez Bellum
Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager
				require_once( IPS_ROOT_PATH . "sources/handlers/han_parse_bbcode.php" );
		        $parser                      =  new parseBbcode( ipsRegistry::instance() );

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

				require_once( IPS_ROOT_PATH . "sources/handlers/han_parse_bbcode.php" );
		        $parser                      =  new parseBbcode( ipsRegistry::instance() );

Sprawdzę, to dokładnie jak postawię forum na serwerze, na localhost mam problemy z funkcją $this, Public itp. Kod w którym jest IPB nie jest w wersji jakiej ja używam na stronie. Pozmieniałem trochę w poprzednim parse bbcode

<?php
//bbcode parse

function parsebbcode($text)
{
$array=array(

	//Standardowe tagi

'[b]' => '<b>', 
'[/b]' => '</b>',
'[i]' => '<i>',
'[/i]' => '</i>', 
'[u]' => '<u>',
'[/u]' => '</u>',
'
[center]' => '<center>',
'[/center]
' => '</center>',
'[big]' => '<h1>',
'[/big]' => '</h1>',
'[nl]' => '<br>',

	//Wszystkie [] zostaly zmienione na <>

'[' => '<',
']' => '>',

'"' => '"',
''' => "'" ,

	//Jak zrobic kolor...

'<color=(.+?)>' => '<p syle="color: \1px">',
'</color>' => '</p>',

	//Akapit

'<indent>' => '<p style="margin: 50px; margin-top: 0px; margin-bottom: 0px;">',	
'</indent>' => '</p>',

	//Stopka artykułu

'<info>' => '<p style="margin: 50px; margin-top: 0px; margin-bottom: 0px;">', 	
'</info>' => '</p>',

	//Lista
'<list=1>' => '<ul>',
'</list>' => '</ul>',	
'<*>' => '<li>',

);
$newtext = str_replace(array_keys($array), array_values($array), $text);
return $newtext;
} 
?>

Znaki " oraz ' w artykułach są w kodowaniu ampersand, zauważyłem to w podglądzie źródła i w pliku

han_parse_bbcode.php. Nadal nie mogę zrobić tagu, który odpowiada za kolor, czcionkę i wielkość.

Pozamieniałem więc wszystkie znaki [] na <> wartością '[' => '<', ']' => '>' i wszystkie '"' => '"', ''' => "'" , dzięki czemu nie ma już widocznego kodowania w artykułach, jednak chciałbym zrobić chociażby ten tag koloru a wtedy z resztą już dalej na przykładzie bym sobie poradził. Znasz Dawi na, to może jakiś sposób?

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko wyrażenia regularne myślę że można by tutaj zastosować. :D

Czytałem o nich, kolejna dżungla po pewnym czasie rozwiążę ten problem, a teraz pytanie z innej bajki w bazie danych w tabeli posts jest post_date, przez jaką funkcję trzeba przepuścić ten wynik, gdyż wyświetla się w sposób taki: 1252258942 raczej mało kto załapie, że to data.

Odnośnik do komentarza
Udostępnij na innych stronach

Szczerze mówiąc, to wcale mi to nie pomogło, ale dzięki, poza tym udało się rozwiązać ten problem:

$human_date = date("Y-m-d H:i:s", $zmienna_daty bądź na sztywno kod Unix);

Mam jeszcze jedno pytanie i temat będzie można zamknąć, w jakiej konkretnie tabeli przechowywany jest Regulamin forum?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

  • Manager

Mam jeszcze jedno pytanie i temat będzie można zamknąć, w jakiej konkretnie tabeli przechowywany jest Regulamin forum?

W tabeli ustawień: core_sys_conf_settings.

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.