Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Preg_replace - bbcode
Lirdoner
post
Post #1





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Witam, zrobiłem na stronie coś na styl forumowych cytatów. Zamieniam tagi przy pomocy preg_replace
  1. preg_replace('/\[quote\=(.*?)\](.*?)\[\/quote\]/s', '<div class="quote">$1:</div><blockquote>$2</blockquote>', $data)

Niestety jeżeli jest cytat w cytacie skrypt nie działa poprawnie
Przykładowo
Kod
[quote=asd]
[quote=adsa]
text
[/quote]
text
[/quote]
text

Zamienia na
Kod
<div class="quote">asd:</div><blockquote>
[quote=adsa]
text
</blockquote>
text
[/quote]
text"

Jak to poprawić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Musisz pokombinować z preg_replace_callback, tutaj masz przykład:
Kod
public static function parse($str){
        
        if(is_array($str)){
            
            $str= '<div class="quote">'.$str[1].'</div>';
        }
        return preg_replace_callback( '#\[quote]((?:[^[]|\[(?!/?quote])|(?R))+)\[/quote]#', 'Bbcode::parse', $str);
    }

Dostosuj do swoich potrzeb i się podziel (IMG:style_emoticons/default/wink.gif)
Powód edycji: [Spawnm]:
Go to the top of the page
+Quote Post
timon27
post
Post #3





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

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


Proponuję się nie meczyć i skorzystać z gotowej klasy:
http://php.net/manual/en/book.bbcode.php

Lub ze znalezionego na tym forum skryptu:
http://forum.php.pl/index.php?showtopic=13425&hl=bbcode

Ten post edytował timon27 1.02.2013, 17:05:33
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: 2.10.2025 - 21:07