![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 30.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam pytanie ,tworzę właśnie swój bbcode za pomocą funkcji preg replace i mam pytanie :Jak połączyć dwie funkcje na raz (np.pogrubienie z podkreśleniem)
Używam takiego kodu : Kod $bb = preg_replace("/\[b\]([^\\[]*)\[\/b\]/i","<strong>\\1</strong>",$bb); $bb = preg_replace("/\[u\]([^\\[]*)\[\/u\]/i","<span style='text-decoration:underline'>\\1</span>",$bb); I chciałbym aby po napisaniu w bbcode Kod [b][u]Tekst[/u][/b] tekst był podkreślony i pogrubionyProszę o pomoc Ten post edytował lukashid 26.11.2011, 09:34:10 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nigdy nie nauczyłem się porządnie wyrażeń regularnych.... i nie bardzo wiem jak ma działać ([^\\[]*) może zamień to na (.*?) czyli dowolny znak dowolną ilość razy, i na końcu dałem ? by mechanizm nie był greedy (jeśli będziesz miał więcej tych samych wskaźników w zmiennej to zamieni wszystkie, a nie tylko zewnętrzne). Coś w ten deseń w każdym razie. W manualu PHP jest opisane jak działa greedy i lazy.
Na końcu dodałbym jeszcze parametr s, by . (kropka) obejmowała też znak nowej linii (też szczegóły dlaczego tak, można znaleźć w manualu) Czyli finalnie ja bym użył: Kod $bb = preg_replace("/\[u\](.*?)\[\/u\]/is","<span style='text-decoration:underline'>\\1</span>",$bb); $bb = preg_replace("/\[b\](.*?)\[\/b\]/is","<strong>\\1</strong>",$bb); powinno działać. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 17:03 |