Momenteel filter ik alle HTML die ingevoerd wordt op mijn (eigen geschreven) gastenboek uit de post. Nu wil ik mijn bezoekers graag de mogelijkheid geven beperkt HTML in te voeren. Dus moet er een UBB parser komen 
Nu heb ik gevonden dat dat in principe op twee manieren kan: met preg_replace of "stack-based". Op het forum heb ik opgezocht wat stack-based betekent:
Daarom mijn vraag: wat is nu het grote voordeel van stack-based UBB parsers tegenover regex gebaseerde? Heeft iemand een concreet voorbeeld van code die door een regex parser zeker niet goed behandeld wordt en door een stack-based parser wel?
-- edit --
Ik heb een eenvoudige regex parser online gezet: http://www.examenhulp.com/?q=node/1
Let op: hij is in het nederlands. Gebruik dus [ plaatje] ipv [ img] en [ tabel], [ rij] en [ cel] ipv de engelse equivalenten
Wie heeft er code die volledig voud geparsed wordt of die de site kunnen exploiten?
Nu heb ik gevonden dat dat in principe op twee manieren kan: met preg_replace of "stack-based". Op het forum heb ik opgezocht wat stack-based betekent:
Ik heb van beide soorten een aantal parsers gedownload, onder andere de stack-based versie van .oisyn. Om het verschil te vinden heb ik een hele zooi UBB ingetikt en het laten parsen door alle parsers, in de hoop dat niet-stack-based parsers zouden vastlopen en ik het voordeel van stack-based zou gaan zien, maar dat is niet echt gebeurd.Een stack is een LIFO collectie. LIFO staat voor 'Last In First Out'. Een andere vorm van collecties is een FIFO stucture (First In First Out), bijvoorbeeld Queues. Een voorbeeld van een stack is een array in PHP waar je alleen een item afhaalt als dat als laatste is toegevoegd. [...]
Wanneer je bijvoorbeeld een openings- tegenkomt sla je die op in de stack (met een 'push' method). Hierna kun je natuurlijk alleen nieuwe openingstags tegenkomen, of een sluitings- tag. Iedere openingstag push je weer op de stack en bij een sluitingstag haal je weer een element van de stack af (en als het goed is, is dat altijd het bijbehorende element, je haalt ze weer in omgekeerde volgorde eraf). Een item van de stack halen doe je met een 'pop' method. Heb je heel je string doorlopen, dan moet je stack weer leeg zijn.
De loop is dan de engine van je parser en de stack gebruik je om de state in op te slaan. Je kunt zelf een LIFO stucture ontwerpen, maar je kunt ook gewoon een PHP array nemen en je bij het gebruik daarvan aan de regels houden die bij een stack horen.
Daarom mijn vraag: wat is nu het grote voordeel van stack-based UBB parsers tegenover regex gebaseerde? Heeft iemand een concreet voorbeeld van code die door een regex parser zeker niet goed behandeld wordt en door een stack-based parser wel?
-- edit --
Ik heb een eenvoudige regex parser online gezet: http://www.examenhulp.com/?q=node/1
Let op: hij is in het nederlands. Gebruik dus [ plaatje] ipv [ img] en [ tabel], [ rij] en [ cel] ipv de engelse equivalenten
[ Voor 7% gewijzigd door Verwijderd op 02-08-2007 13:59 ]