Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]kod html do bbcode
GoOx
post 4.02.2012, 09:42:02
Post #1





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
lobopol
post 4.02.2012, 09:49:58
Post #2





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował lobopol 4.02.2012, 09:55:10


--------------------
Go to the top of the page
+Quote Post
GoOx
post 4.02.2012, 09:59:48
Post #3





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


dobra załóżmy że wykorzystam 3 opcję.

jak zlikwidować entery? by one działały ale były niewidoczne

Ten post edytował GoOx 4.02.2012, 10:00:10
Go to the top of the page
+Quote Post
lobopol
post 4.02.2012, 10:02:07
Post #4





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


str_replace()?

Ten post edytował lobopol 4.02.2012, 10:02:39


--------------------
Go to the top of the page
+Quote Post
GoOx
post 4.02.2012, 10:07:36
Post #5





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


nie rozumiem.

czyli tak ?

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

Go to the top of the page
+Quote Post
lobopol
post 4.02.2012, 10:11:19
Post #6





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


Chyba chciałeś się br pozbyć przy edycji?


--------------------
Go to the top of the page
+Quote Post
GoOx
post 4.02.2012, 10:12:49
Post #7





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


tak ale by te entery tam pozostały.
Go to the top of the page
+Quote Post
lobopol
post 4.02.2012, 10:18:47
Post #8





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


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)


--------------------
Go to the top of the page
+Quote Post
GoOx
post 4.02.2012, 10:22:09
Post #9





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


po czym wszystko się zjedzie w całość może inny pomysł?
Go to the top of the page
+Quote Post
lobopol
post 4.02.2012, 10:45:26
Post #10





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

Ostrzeżenie: (0%)
-----


W textarea? Nic ci się nie zjedzie.


--------------------
Go to the top of the page
+Quote Post
GoOx
post 4.02.2012, 10:49:33
Post #11





Grupa: Zarejestrowani
Postów: 329
Pomógł: 6
Dołączył: 23.11.2011
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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);



Ten post edytował GoOx 4.02.2012, 10:52:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:13