aan alle goede dingen komt een eind, webmasterplein.net 2003 - 2013
wij danken jullie voor al mooie momenten die dankzij dit forum ontstonden - Derk, Rutger en Stef

[php] Quote in een quote

Deel alles wat je delen kan, gebruik het voor opslag, plaats het omdat je er trots op bent of creëer samen wat moois!

[php] Quote in een quote

Berichtdoor Stefan » 02 feb 2009 17:08

Ik zat op mijn eigen forum met een probleem dat de quote in een quote niet goed geparsed werd. Hiervoor heb ik een kleine snippet geschreven...

Code: Selecteer alles
    // Opmaak voor de quote
    $quote = '<div id="ubb_quote"><span>Quote%naam%:</span><div class="quote">%quote%</div></div>'; 

    
// Herhaal voor iedere quote
    while(preg_match('/\[quote(=([a-z0-9\_ ]{2,20}))?\](.+?)\[\/quote\]/is', $bericht)){ 
        
        $bericht 
= preg_replace( 
            
// Quote openen (eventueel quote = ...)
            '/' . '\[quote(=([a-z0-9\_ ]{2,20}))?\]'. 
            
            
// Quote inhoud
            '((.(?!\[quote\]))*?)'. 
            
            
// Quote afsluiten
            '\[\/quote\]' . '/'.
             
            
'i'. // Hoofdletters
            's'. // Punt telt voor ieder teken, ook voor nieuwe regels
            'e'  // Vervanging voor de PHP-code
        , 
            
'strtr ( 
                // Haal opmaak voor quote op
                $quote
            ,
                array( 
                    // Zet de quote inhoud in quote opmaak
                    "%quote%" => "$3",
                    
                    // Controleer of er een naam is ingevuld, anders leeg
                    "%naam%" => (("$2" == "") ? "" : " $2") 
                ) 
            ); 
            '
        , 
            $bericht 
        
); 
    
} 
 


Ik hoor wel wat jullie er van vinden!

($bericht is de tekst die geparsed moet worden)
Opzoek naar een webdesigner? http://webtilize.net/
Avatar gebruiker
Stefan
wmpr
 
Berichten: 406
Geregistreerd: 27 dec 2007 14:08
Woonplaats: Ter Aar

Re: [php] Quote in een quote

Berichtdoor ElbertF » 02 feb 2009 21:45

Geneste BBCodes kun je niet met één regexje verwerken, daar zul je toch iets uitgebreiders voor moeten schrijven. Je moet steeds de buitenste match vervangen en dan opnieuw zoeken naar een match (in een loop).
Avatar gebruiker
ElbertF
wmpr
 
Berichten: 1310
Geregistreerd: 14 nov 2007 22:09

Re: [php] Quote in een quote

Berichtdoor libia » 03 feb 2009 16:48

ik nummer ze meestal, dan wordt
Code: Selecteer alles
[quote][quote][quote][/quote][/quote] [quote][/quote][/quote] [quote][/quote]

dit:
Code: Selecteer alles
[quote:1][quote:2][quote:3][/quote:3][/quote:2] [quote:2][/quote:2][/quote:1] [quote:1][/quote:1]

dan kun je het met een simpel regexje allemaal vervangen :)


hiermee heb je dus in totaal twee regexen nodig en geen loop :)
Avatar gebruiker
libia
wmpr
 
Berichten: 4149
Geregistreerd: 23 okt 2005 14:14
Woonplaats: Alphe!!

Re: [php] Quote in een quote

Berichtdoor ElbertF » 08 feb 2009 01:06

En hoe nummer je ze dan zonder een loop? :}
Avatar gebruiker
ElbertF
wmpr
 
Berichten: 1310
Geregistreerd: 14 nov 2007 22:09

Re: [php] Quote in een quote

Berichtdoor libia » 08 feb 2009 15:52

ElbertF schreef:En hoe nummer je ze dan zonder een loop? :}

uhm.. ik weet het niet meer, misschien had ik dus eigenlijk wel een loop :D
Avatar gebruiker
libia
wmpr
 
Berichten: 4149
Geregistreerd: 23 okt 2005 14:14
Woonplaats: Alphe!!

Re: [php] Quote in een quote

Berichtdoor Stefan » 10 feb 2009 19:28

Ik zit nu alleen nog met een vraagje over mijn eigen code:P dat komt vooral omdat ik neit goed met met preg_*

Als ik bij de [ quote=...] test [/quote] doe dan doet de quote het niet omdat de puntjes niet in de preg_* mogen staan. Hoe kan ik dit oplossen?
Opzoek naar een webdesigner? http://webtilize.net/
Avatar gebruiker
Stefan
wmpr
 
Berichten: 406
Geregistreerd: 27 dec 2007 14:08
Woonplaats: Ter Aar

Re: [php] Quote in een quote

Berichtdoor Remi » 10 feb 2009 20:01

Dan voeg je gewoon een puntje toe ;)
'/\[quote(=([a-z0-9\_. ]{2,20}))?\](.+?)\[\/quote\]/is'
Avatar gebruiker
Remi
wmpr
 
Berichten: 3010
Geregistreerd: 04 apr 2006 15:22

Re: [php] Quote in een quote

Berichtdoor Stefan » 11 feb 2009 13:18

Remi schreef:Dan voeg je gewoon een puntje toe ;)
'/\[quote(=([a-z0-9\_. ]{2,20}))?\](.+?)\[\/quote\]/is'
Dat had ik ook gedaan, alleen dat deed ie niet en gaf ie een error :?:

EDIT: Hij doet ut, het script was verkeerd afgesloten :P
Opzoek naar een webdesigner? http://webtilize.net/
Avatar gebruiker
Stefan
wmpr
 
Berichten: 406
Geregistreerd: 27 dec 2007 14:08
Woonplaats: Ter Aar

Re: [php] Quote in een quote

Berichtdoor libia » 12 feb 2009 13:41

je moet wel de puntjes backslashen!
Avatar gebruiker
libia
wmpr
 
Berichten: 4149
Geregistreerd: 23 okt 2005 14:14
Woonplaats: Alphe!!


Keer terug naar Snippets



cron