Toon posts:

[Perl] ubb code tags met regex

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey, dit is mijn eerste post op GoT (ik gebruik al maanden bijna dagenlijks de search engine om mn vragen te beantwoorden ;)) maar aangezien ik er nu helemaal niet meer uitkom probeer ik maar eens zelf een thread te starten :9. Dit i dus mijn probleem: ik ben een forum aan het scripten met alles erop en eraan, dus ook met ubb codes. Nou wil ik dus dat al het ubb code tussen [ code ] en [ /code ] word genegeerd. Om dat voor elkaar te krijgen wil ik dus overal waar ':' en '[' in zit een '|' achter plaatsen. Zat daar al een '|' in, dan komt daar dus een bij, dat gaat zo door, dus als er 13 |'s zijn worden dat er 14 :). Nu heb ik dit op een aantal mannieren geprobeert te krijgen, maar dat wilt niet echt lukken. Dit heb ik allemaal al geprobeert:
code:
1
$convert =~ s/(\\[CODE\].*?)(\\[|\:)(.*?\\[\/CODE\])/$1$2|$3/ig;

Deze werkt helaas alleen maar bij elk eerste ':' en '|' in elke [ code ] [ /code ] tag.
code:
1
2
3
4
5
if ($convert =~ /(\\[CODE\])(.+?)(\\[\/CODE\])/isg) {
  $replace = $2;
  $replace =~ s/(\\[|\:)(\|*)/$1$2\|/isg;
  $convert =~ s/(\\[CODE\])(.+?)(\\[\/CODE\])/ $leftcode$replace$rightcode /is;
}

Deze werkt ook wel, alleen doet hij dat alleen maar bij de allereerste [ code ] [ /code ] tags, en als ik van die if een while maak, dan krijg ik een server error |:(

Nadat de ubb codes hun werk hebben gedaan moet alles dan ook nog worden omgezet, maar die regex command zou niet zoveel schelen als die je nodig hebt om dat daarboven voor mekaar te krijgen.

Ik weet het niet meer, misschien dat de Perl masters op deze forum me kunnen helpen?

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Je zou kunnen kijken hoe andere fora (bijv. YaBB e.d.) dit probleem aanpakken en vervolgens kijken of die manier ook voor jou geschikt is. Het is trouwens een bekend probleem waar veel mensen die een forum schrijven last van hebben.

Verwijderd

Interessant leesvoer: [topic=156093/1/25]

Daar moet je wat aan hebben. Verder raad ik je niet aan om naar de YaBB codeparser te kijken die is op het moment een stuk ranziger dan toen ik hem het laatst aanraakte ;)

Verwijderd

Topicstarter
Helaas, dat heb ik ook al geprobeert. De meeste bekende forums negeren ubb codes en smilies niet als ze tussen [ code ] [ /code ] tags zijn. Vaak is het enige wat die tags doen dat er een blockquote tussen komt en dat de lettertype courier of iets dergelijks word. De meeste forums zijn dus niet zo knap gemaakt ;(.

Verwijderd

Hoe het kan:
code:
1
2
3
4
5
6
7
8
9
10
<Begin document>
bla dit moet [b]wel[/b] geparsed worden
[code]
en dit dus juist weer niet
[/code ]
en dit weer wel...
[code]
dit weer niet
[/code ]
<Eind document>

Wat valt je op? Welke stukken moeten wel geparsed worden en welke niet? Zou je hem misschien op kunnen splitsen en gedeelten parsen?

Verwijderd

Topicstarter
Op zondag 17 februari 2002 18:53 schreef Zef het volgende:
Hoe het kan:
code:
1
2
3
4
5
6
7
8
9
10
<Begin document>
bla dit moet [b]wel[/b] geparsed worden
[code]
en dit dus juist weer niet
[/code ]
en dit weer wel...
[code]
dit weer niet
[/code ]
<Eind document>

Wat valt je op? Welke stukken moeten wel geparsed worden en welke niet? Zou je hem misschien op kunnen splitsen en gedeelten parsen?
Je bedoelt dus ipv mijn idee met die |'s gewoon rechtstreeks alles inlezen ofzo? Dat lukt dus niet met regex of heb ik dat nou?
code:
1
  $string .= $line =~ s/(.*?)\\[code\]/$1/i;

Bedoel je iets in deze richting? Ik heb geen idee hoe ik jou mannier zou moeten aanpakken :)
Pagina: 1