Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]BBcode Łączenie
Forum PHP.pl > Forum > Przedszkole
lukashid
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 pogrubiony
Proszę o pomoc
aachi
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ć.
lukashid
No dobrze a jak uzyskać efekt pogrubienia i podkreślenia na raz ? O
aachi
Ż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.
lukashid
Ok,Dzięki za pomoc ,+
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.