![]() |
![]() |
![]()
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ć. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 30.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
No dobrze a jak uzyskać efekt pogrubienia i podkreślenia na raz ? O
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Że niby jednym poleceniem? Trzeba użyć tablic zamiast pojedynczych stringów. Pamiętaj, że kolejność elementów w tablicy musi być zachowana (i nie ważne jak są numerowane klucze, ważna jest kolejność dodawania do tablicy)
Kod $bb = preg_replace(array("/\[u\](.*?)\[\/u\]/is","/\[b\](.*?)\[\/b\]/is"),array("<span style='text-decoration:underline'>\\1</span>","<strong>\\1</strong>"),$bb); Sorki, twój poprzedni kod nie działał u mnie prawidłowo i myślałem, ze to z tym masz problem. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 0 Dołączył: 30.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ok,Dzięki za pomoc ,+
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 11:27 |