[php] zamiana bbcode na html

0

mam taki problem. Na forum PHPBB gdy wstawia się tag bbcode np [b][/b] do bazy wchodzi coś takiego [b:0983e84684][/b:0983e84684] Ściągnąłem sobie gotowca z internetu który zamienia kod bbcode na html ale tam zamienia tagi typu [b]
Jak zrobić aby zamieniało te tagi ([b:0983e84684]) na html. kod zamieniający tagi [b] na html jest taki:

$str = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $str);

Prosiłbym o edycje tego kodu tak aby działało dla tagów [b:0983e84684] gdzie 0983e84684 mogą znajdować się nieskończenie wiele cyfr i liter.
Jeżeli to możliwe prosiłbym o wytłumaczenie tego kodu albo jakiś link gdzie moge znaleŹć dokładny opis wyrażeń i funkcji typu preg_replace i ereg_replace itp. Szukając na google kilka stron znalazłem ale wszędzie wytłumaczone w bardzo dużym skrócie i nie potrafię tego zrozumieć i też np. nigdzie nie mogłem znaleŹć co oznacza znak # i #si :) Proszę o pomoc
Z góry dziękuję

0

może

$str = preg_replace("#\[b:.*?\](.*?)\[/b\]#si", "<b>\\1</b>", $str);

nic nie oznacza - to może być dowolny znak, którego nie będziesz stosować w środku wyrażenia, najczęściej jest to "/" ale może być cokolwiek, "oddziela wyrażenie od parametrów" czy tu "si" - "i" znaczy "case Insensitive" czyli A = a a "s" to chyba znaczy że kropka (oznaczająca dowolny znak) będzie też pasować do nowej linii

[ escaped [ - czyli po prostu znak "[" bez specjalnego znaczenia (bez backslasha ma znaczenie przedziału)

b: - b, dwukropek
.* - dowolny znak dowolną ilość razy, ale
.? - jw. tyle że próbuje nałapać jak najmniej można
] - znak "]"
(.
?) jw tyle że teraz co złapie to daje do \1 (backreference 1 ?)

dalej podobnie jak wcześniej

jak chcesz się nauczyć wyrażeń to może spróbuj ulubionej strony Marooneda http://www.regular-expressions.info/

ale właściwie to chciałem się w tym poście ja spytać - czemu do bazy jest tak dziwnie dodawane ?

0

zrobiłem tak:

preg_replace("#\[b:.*\](.*?)\[/b:.*\]#si", "<b>\\1</b>", $str);

bez znaku zapytania i też działa ;] co tto za różnica czy ze znakiem czy bez ?

0

w tym przypadku to chyba żadna

ale bez znaku teoretycznie np [b].*[/b] łapie

[b]abc[/b]fsdfsd [b]fsdfsdf[/b]

a ze znakiem [b].*?[/b]:

[b]abc[/b]fsdfsd [b]fsdfsdf[/b]

0

eee nie kminie :/

0

skrypt działa od wyrażenia do wyrażenia, przy czym ze znakiem zapytania kończy działanie przy pierwszej okazji, a zrobienie tekstu typu:
[b]asdasdasd[/b][b]asdasdasd[/b]aaaaaaaaaaaa[b]asdasdasd[/b][b]asdasdasd[/b]
wyświetli się bez znaku w ten sposób:
asdasdasd[/b][b]asdasdasd[/b]aaaaaaaaaaaa[b]asdasdasd[/b][b]asdasdasd
a ze znakiem:
asdasdasdasdasdasdaaaaaaaaaaaaasdasdasdasdasdasd

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.