Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]kod html do bbcode
Forum PHP.pl > Forum > Przedszkole
GoOx
Siemka,

ostatnio na moim forum zacząłem robić bbcode lecz mam problem

  1. $tresc = nl2br($tresc);
  2. $tresc = preg_replace("#\[b\](.*?)\[/b\]#si",'<b>\\1</b>',$tresc);
  3. $tresc = preg_replace("#\[i\](.*?)\[/i\]#si",'<i>\\1</i>',$tresc);
  4. $tresc = preg_replace("#\[u\](.*?)\[/u\]#si",'<u>\\1</u>',$tresc);
  5. $tresc = preg_replace("#\[s\](.*?)\[/s\]#si",'<s>\\1</s>',$tresc);


to wszystko super działa ale jak zrobić by podczas edycji nie były odczytywane kody html tylko s powrotem do bbcode przerobione?

a i zostaje kwestia nowej linji jak zrobić by podczas edycji postu <br /> było niewidoczne?
lobopol
Masz 2 opcje:
1. W bazie trzymać tylko nieprzerobiony tekst czyli:
  1. [b]tralala[/b]

i przy wyświetlaniu parsować do html
2. W bazie trzymać sparsowany i niesparsowany tekst w dwóch polach w tabeli czyli
  1. tab1 = [b]tralala[/b]
  2. tab2 =<b>tralala</b>

i przy edycji wyświetlać tekst niesparsowany, a po zapisie zmieniać obie wartości w tablicy. Przy wyświetlaniu podawać już tekst przerobiony.

Oba wyjścia mają zalety i wady:
1. Mniej zajmuje, mniej kłopotliwa edycja, bardziej obciążające wyświetlanie
2. Więcej zajmuje(ponad 2 razy), bardziej kłopotliwa edycja (niedużo), mniej obciążające wyświetlanie

Istnieje jeszcze 3 opcja, parsować przy edycji kod html do bbcode na zasadzie:
  1. $tresc = preg_replace("#\<b\>(.*?)\</b\>#si",'[.b]\\1[/b]',$tresc);

Ale to byłoby dość dzikie
GoOx
dobra załóżmy że wykorzystam 3 opcję.

jak zlikwidować entery? by one działały ale były niewidoczne
lobopol
str_replace()?
GoOx
nie rozumiem.

czyli tak ?

str_replace("/n", "", $tresc );

lobopol
Chyba chciałeś się br pozbyć przy edycji?
GoOx
tak ale by te entery tam pozostały.
lobopol
Z tego co się orientuje to nl2br dodaje do każdego entera <br> więc wystarczy, że wywalisz <br> (albo <br/> nie pamiętam które zwraca)
GoOx
po czym wszystko się zjedzie w całość może inny pomysł?
lobopol
W textarea? Nic ci się nie zjedzie.
GoOx
w textarea nie ale po zapisie tak.

a poza tym.

przy pisaniu tematu mam taki bbcode

  1. $tresc = preg_replace("#\[size=1\](.*?)\[/size\]#si",'<font size=1>\\1</font>',$tresc);

i taki error


Parse error: syntax error, unexpected T_STRING in /home/recenzeo/public_html/nowy.php on line 76

podobnie mam z <center>

a już wiem $tresc = preg_replace("#\[br\]#si",'<br>',$tresc); jak to osunąłem to było dobrze ale gdzie tu jest błąd?

  1. $tresc = preg_replace("#\[br\]#si",'<br>',$tresc);

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.