Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Preg_replace - bbcode
Forum PHP.pl > Forum > Przedszkole
Lirdoner
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ć?
Spawnm
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 wink.gif
timon27
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
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.