[PHP] Forum Quote binnen een Forum Quote

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 21:18
Hallo,

Ik heb een forum en je kunt daarmee uiteraard ook bijvoorbeeld het vorige bericht Quoten.

Maar je kunt een bericht ook weer Quoten waar al in geQuote is.

Ik wil dus dat er Automatisch de Quotes binnen een Quote weggehaald worden.
Dus net zoals bij GoT:

[...]
In deze Quote zou dus normaal een Quote moeten staan, maar dies weg:);)
Edit:

Sorry voor de onduidelijk post :o

Wat ik zelf al geprobeerd heb, ik weet zelf niet echt waar ik moet beginnen.

Ik quote gewoon de berichten, maar bij het opslaan kan ik wel alles tussen [Quote] weghalen maar de laatste/eerste quote (vanaf welke kant je het bekijkt:P) moet natuurlijk blijven.

[ Voor 32% gewijzigd door Scotix op 18-03-2005 21:10 ]


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:44

gorgi_19

Kruimeltjes zijn weer op :9

Wat is het probleem? Wat lukt er niet? Wat heb je zelf geprobeerd? Oftewel: zie P&W FAQ - De "quickstart" :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

Ey,

Als je de volgende pagina even doorleest en je startpost aanpast aan de richtlijnen die daarin staan maak je misschien kans dat je topic open blijft :)

P&W Beleid

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Bij het bewerken simpelweg met een regular expressie alles tussen [quote] en [/quote] weghalen in de originele post, en daarna pas de rest van de bewerkingen erop doen. Niet zo moeilijk toch? :o

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Scotix
  • Registratie: Juni 2002
  • Laatst online: 21:18
-NMe- schreef op vrijdag 18 maart 2005 @ 21:04:
Bij het bewerken simpelweg met een regular expressie alles tussen [quote] en [/quote] weghalen in de originele post, en daarna pas de rest van de bewerkingen erop doen. Niet zo moeilijk toch? :o
Ik zal even proberen,

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 21:01
Bij React (dit forum) werkt het trouwens wel iets ingewikkelder dan -NMe- stelt, want je hebt verschillende manieren om tags te schrijven (behalve [norml]
..
[/] ook [norml]
..
[/]) en je moet daarom ook tellen hoeveel andere tags er tussen zitten en rekening houden met tags tussen [norml]-tags die niet meetellen.

Het zou me niets verbazen als de hele post gewoon door dezelfde parser gaat als bij het formatteren, waarna de geneste quotes uit de parse tree worden gegooid en de boel helemaal opnieuw wordt opgebouwd.

Merk bovendien op dat dat niet alleen gebeurt als je op 'quote' klikt, maar ook als je zelf een nieuwe post hebt getypt. Als je handmatig [norml]

[...]
[/] typt dan wordt die binnenste quote er namelijk ook uitgehaald!

[ Voor 3% gewijzigd door Soultaker op 18-03-2005 21:31 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Soultaker schreef op vrijdag 18 maart 2005 @ 21:29:
Bij React (dit forum) werkt het trouwens wel iets ingewikkelder dan -NMe- stelt, want je hebt verschillende manieren om tags te schrijven (behalve [norml]
[...]
[/] ook [norml]
[...]
[/]) en je moet daarom ook tellen hoeveel andere tags er tussen zitten en rekening houden met tags tussen [norml]-tags die niet meetellen.

Het zou me niets verbazen als de hele post gewoon door dezelfde parser gaat als bij het formatteren, waarna de geneste quotes uit de parse tree worden gegooid en de boel helemaal opnieuw wordt opgebouwd.
De GoT-BB-code-parser (wow, veel hyphens :+) is voor zover ik weet gemaakt door .oisyn en gewoon te downloaden: http://www.oisyn.nl/articles.php/12
Ik heb er zelf nooit uitgebreid naar gekeken, maar het beeld dat Soultaker schetst klopt naar wat ik ervan gezien heb wel.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Superdeboer
  • Registratie: December 2002
  • Niet online

Superdeboer

Sa-weee-tah

-NMe- schreef op vrijdag 18 maart 2005 @ 21:39:
De GoT-BB-code-parser (wow, veel hyphens :+) is voor zover ik weet gemaakt door .oisyn en gewoon te downloaden: http://www.oisyn.nl/articles.php/12
Wrong. ;)
OML != RML. Die parser heeft hij geschreven voor zijn eigen forumsoftware.

De syntaxhighlighter van React (die je ook op die pagina kunt vinden) is wél door .oisyn geschreven. :)

When I write my code, only God and I know what it means. One week later, only God knows.
Hell yes it's a Cuban Cigar, but I'm not supporting their economy, I'm burning their fields.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Superdeboer schreef op vrijdag 18 maart 2005 @ 21:43:
Wrong. ;)
OML != RML. Die parser heeft hij geschreven voor zijn eigen forumsoftware.
Ah, ok, weer wat geleerd. :P Hoe dan ook, naar wat ik ervan gezien heb, heeft ie wel ongeveer dezelfde functionaliteit. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:18

crisp

Devver

Pixelated

Met regular expressions is dat alleen op te lossen mbv recursie binnen je regexp; dan krijg je zoiets:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$content = preg_replace_callback('/\[quote]((([^[]|\\[(?!\/?quote))*|(?R))*)\\[\/quote]/is', 'quote', $content);

function quote($matches) {

  $content = $matches[1];

  // toggle genest of geneste quotes vervangen door [...]
//  $content = preg_replace_callback('/\[quote]((([^[]|\\[(?!\/?quote))*|(?R))*)\\[\/quote]/is', 'quote', $content);
  $content = preg_replace('/\[quote]((([^[]|\\[(?!\/?quote))*|(?R))*)\\[\/quote]/is', '<br />[...]<br />', $content);

  // vervang [img]-tags door [url=...]afbeelding[/url]
  $content = preg_replace('/\\[img\](http:\/\/)?(.*?)\\[\/img\]/i', '<a href="http://$2" target="_blank">afbeelding</a>', $content);
  $content = preg_replace('/\\[img=([0-9]{1,3}),([0-9]{1,3})\](http:\/\/)?(.*?)\\[\/img\]/i', '<a href="http://$4" target="_blank">afbeelding</a>', $content);

  return '<blockquote>quote:<hr width="100%" size="1" color="#808080" />'.$content.'<hr width="100%" size="1" color="#808080" /></blockquote>';

}

De echte parsers zijn echter meestal stack-based en bieden daardoor ook veel meer mogelijkheden :)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • deWit
  • Registratie: November 2004
  • Laatst online: 20:27

deWit

Niet goed, geld toch kwijt!

Je zou als voorbeeld ook de UBBparser van phpBB kunnen bekijken. Hieruit kan je al een groot deel halen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

deWit schreef op zaterdag 19 maart 2005 @ 10:39:
Je zou als voorbeeld ook de UBBparser van phpBB kunnen bekijken. Hieruit kan je al een groot deel halen.
Die staat quotes in quotes juist wel toe, en ik geloof dat dat juist het tegenovergestelde is van wat topicstarter wil. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • deWit
  • Registratie: November 2004
  • Laatst online: 20:27

deWit

Niet goed, geld toch kwijt!

Jah dat klopt, maar dan is er wel een begin. Met die code is het quote in quote probleem ook wel aan te passen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

deWit schreef op dinsdag 22 maart 2005 @ 20:41:
Jah dat klopt, maar dan is er wel een begin. Met die code is het quote in quote probleem ook wel aan te passen.
Dat is waar, maar er zijn tientallen betere voorbeelden te noemen. Bij phpBB is het zaakje extra complex gemaakt om quotes in quotes toch toe te kunnen staan, ook al gebruiken ze regular expressions. Die code is gewoon heel vervelend om door te lezen, en zeker als je weet dat het veel simpeler kan met een tokenizer. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1