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 (1 - 4)
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
lukashid
post
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
Go to the top of the page
+Quote Post
aachi
post
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.
Go to the top of the page
+Quote Post
lukashid
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 30.10.2009

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


Ok,Dzięki za pomoc ,+
Go to the top of the page
+Quote Post

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: 5.10.2025 - 11:27