[PHP] UBB > Tabellen met attributen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 21:49

vanDaal

-ismeereentje

Topicstarter
Ik ben bezig met een UBB parser en nu wil ik op het gebied van tabellen maken hetzelfde mogelijk maken als op GoT mogelijk is (zie hier onderaan).

Dit is een deel uit de code die ik nu heb:
PHP:
1
2
3
4
5
6
7
8
9
10
11
function ReplaceText($tekst) 
{
    $patterns = array(
                      "/\\[table\s(width=)(.+?)\]/s",
                      );
    $replaces = array(  
                      "<table border=\"0\" width=\"\\2\" cellspacing=\"2\" cellpadding=\"2\">\n",
                      );
    $tekst = htmlspecialchars($tekst);
    $result = preg_replace($patterns, $replaces, $tekst);
    return $result;

Het werkt wel, maar dit gaat nog lang niet goed genoeg, aangezien ie nu een [table] UBB tag (zonder width=x) niet zal gaan parsen. Maar ik heb ook geen idee hoe ik voor elkaar gaat krijgen dat ie elke mogelijke combinatie van een [table] goed parsed. Dus bijvoorbeeld:

- [table width=100 border=0 cellpadding=2 background=#ffffff]]
- [table cellpadding=2 cellspacing=5 width=100 background=#ffffff]]
- enz, enz

Iemand een idee hoe je zoiets zonder al te veel coderegels voor elkaar kunt krijgen? Je kunt natuurlijk wel voor elke mogelijke combinatie een nieuwe parse-regel maken, maar dat lijkt me niet echt handig.

Acties:
  • 0 Henk 'm!

  • Koeniepoenie
  • Registratie: Oktober 2003
  • Laatst online: 15-09 21:46
Je zou alle 'attributen' in 1 string moeten afvangen, dan allemaal doorlopen (kijken of ze geldig zijn etc.) en dan omzetten naar HTML.

Parse error: syntax error, unexpected GOT_USER in https://gathering.tweakers.net on line 1337


Acties:
  • 0 Henk 'm!

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 21:49

vanDaal

-ismeereentje

Topicstarter
Dat zou idd kunnen, maar zou wel redelijk wat code opleveren. Zou er geen efficiëntere methode zijn?

Acties:
  • 0 Henk 'm!

  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 12:54
Je kunt als het goed is in een Regular Expression aangeven of een subgroep 0 of meerdere keren mag voorkomen. Als je dan alle 'attributen' definieerd die jij wilt hebben ben je klaar. Dan heb je dus 1 string, maar wel de mogelijk of allerlei verschillende 'attributen' mee te geven.

Hoe je het precies implementeert moet je even in de P&W FAQ onder Regular Expressions kijken, ik ben er niet zo in thuis dat ik ze zomaar uit mijn mouw schud. :)

Acties:
  • 0 Henk 'm!

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 21:49

vanDaal

-ismeereentje

Topicstarter
Sybr_E-N schreef op vrijdag 20 mei 2005 @ 22:56:
Hoe je het precies implementeert moet je even in de P&W FAQ onder Regular Expressions kijken, ik ben er niet zo in thuis dat ik ze zomaar uit mijn mouw schud. :)
Ik ben er ook niet zo in thuis, maar ik heb even gekeken. Het wordt me allemaal nog niet 1, 2, 3 duidelijk, dus mocht iemand een voorzetje kunnen geven, graag :)

Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:53

MueR

Admin Tweakers Discord

is niet lief

Waar je ook op moet letten, zijn linebreaks. Vaak worden deze, mits je natuurlijk gebruik maakt van nl2br() oid, ook allemaal omgezet naar een <br />. Je zult dus ook een manier moeten bedenken om de linebreaks tussen de [table] tags uit te krijgen.

Verder zou ik gewoon een extra regel toevoegen aan je patterns en replaces, met enkel de [table] tags, zonder attributen. Dat scheelt weer iets in snelheid.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • vanDaal
  • Registratie: November 1999
  • Laatst online: 21:49

vanDaal

-ismeereentje

Topicstarter
r0bert, dat stack-based zie ik volgens mij niet helemaal zitten. Volgens mij krijg ik het daar niet mee voor elkaar dat een tabel met attributen omgezet wordt naar het juiste HTML/CSS formaat.

MueR, voordat ik eventueel problemen ga ondervinden met het omzetten van linebreaks, moet ik eerst een idee hebben van de beste manier om iets dergelijks aan te pakken. Dat heb ik nu nog niet genoeg.

Het idee achter RegExp's heb ik ondertussen redelijk door (na een tijdje trial&erroren), alleen heb ik dus nog steeds niet een goed idee hoe ik de RegExp's moet gaan structureren. Dus mocht iemand daar een (ervaren) mening over hebben... graag :>

Acties:
  • 0 Henk 'm!

Verwijderd

Als je stack-based niet ziet zitten, hoe ga je dan lay-out vern**kende tabellen door verkeerde code van users afvangen?
Pagina: 1