Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]BBcode Łączenie, BBcode
lukashid
post
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 pogrubiony
Proszę o pomoc

Ten post edytował lukashid 26.11.2011, 09:34:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
aachi
post
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ć.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.10.2025 - 17:03