[PHP] Eigen TagParser, veel tags probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46
Hoi beste devvers,

Een tijdje geleden heb ik zelf een TagParser geschreven die ik voor 'n Forum in kan zetten.
Nou vond ik het zo makkelijk werken, dat ik heb wat heb aangepast om ook delen van mijn site te genereren.
Dit werkt allemaal perfect, zolang ik maar een beperkt aantal tags gebruik (teminste, ik denk dat het aan de hoeveelheid tags ligt)

hier de functie:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?PHP

function tabelParser($tabel)
{
  $rij = explode("[",$tabel);
  $resultaat = "";
  foreach($rij as $a => $b)
  {
    $b = trim($b);
    if (substr($b, 0, 6)=="table]")
      $b = str_replace("<br />","",$b);
    if (substr($b, 0, 3)=="tr]")
      $b = str_replace("<br />","",$b);
    if (substr($b, 0, 4)=="/tr]")
      $b = str_replace("<br />","",$b);
    if (substr($b, 0, 4)=="/th]")
      $b = str_replace("<br />","",$b);
    if (substr($b, 0, 4)=="/td]")
      $b = str_replace("<br />","",$b);
      
    $resultaat = $resultaat."[".$b;
  }
  
  $resultaat = substr($resultaat,1);
  
  return $resultaat;
}

?>
(overbodige code verwijderd)

Dit hele ding werkt dus gewoon, behalve als ik er echt veel tags doorheen wil halen (ongeveer 1000 regels met tags).

Het gaat alleen fout met tags om een tabel op te bouwen, de andere tags kan ik schijnbaar zo veel gebruiken als ik wil.

Ziet er iemand waar het precies fout gaat?

[ Voor 126% gewijzigd door KompjoeFriek op 21-12-2003 22:46 ]

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:16
Euh nee..... Ik zie het niet, en het is ook niet de bedoeling van P&W dat anderen jouw code gaan debuggen.
En met gewoon op de code te staren, zal je het ook niet vinden.

Misschien kan je zelf eerst eens je code debuggen, en proberen na te gaan wat / waar het fout loopt?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46
ik denk dus dat het fout gaat in de tabelParser functie, omdat ik daar met explode werk, en voor alle andere tags niet.
zit er misschien een limiet aan de lengte die explode kan verwerken?

Het lastige is dat ik niet eens een foutmelding van PHP terug krijg, hij zegt dat hij de pagina niet kan vinden :?
edit:
Ik vraag trouwens niet of jullie mijn code ff willen debuggen, maar of jullie kunnen zien wat ik fout doe. Misschien is er iemand die ook iets soortgelijks heeft gehad, en mij hiermee kan helpen...


Ow ja, ik had ook al een aantal dingen over tijdslimieten enz. van PHP, maar volgens mij heeft dat hier ook al niet mee te maken, omdat hij meteen zegt dat hij de pagina niet kan vinden.

[edit]Ok, ik ben er na de zoveelste keer testen achter gekomen, dat het dus niet in die functie zit :(

het gaat blijkbaar fout ergens in deze regel:
PHP:
1
2
3
  $string = preg_replace("_\\[table\]((.|\n)*)\\[/table\]_isU",
  "<table border=\"0\" cellpadding=\"1\" cellspacing=\"1\"
  bgcolor=\"#".$ins["forumKleur"]."\">\\1</table>", $string);
(normaal is dit 1 lange regel, maar ff opgebroken voor de layout O-) )

[ Voor 74% gewijzigd door KompjoeFriek op 21-12-2003 23:49 ]

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

Verwijderd

je moet proberen zo veel mogelijk het gebruik van preg replace of ereg replace zien te voorkomen. Dit maakt je parser alleen maar traag en is lastig bij grote lappen tekst...

je zou gebruik kunnen makken van strpos en substr. Ik heb ook een parser gemaakt die zo werkt en is erg snel. Het verschril merk je ten opzichte van preg replace.

misschien kan je er een idee mee op doen : http://www.spidow.nl/index2.php?pagina=script&id=78

Acties:
  • 0 Henk 'm!

  • KompjoeFriek
  • Registratie: Maart 2001
  • Laatst online: 15-08 22:46
Bedackt spidow!
dat ziet er een stuk beter uit dan de code die ik heb.

Morgen ga ik meteen kijken of ik 'm ook kan aanpassen dat hij een tabel voor me kan genereren.

Ik ben er trouwens ook achter gekomen dat mijn code lastig uit te breiden is, en erg lang duurd met parsen. jou code is iid veel efficienter.

nogmaals bedankt!

WhatPulse! - Rosetta@Home - Docking@Home


Acties:
  • 0 Henk 'm!

  • Cipri
  • Registratie: Januari 2001
  • Laatst online: 29-07-2024

Cipri

Of niet natuurlijk...

Kijk ook eens op http://pear.php.net/package/HTML_BBCodeParser waar een prachtige module staat om BBCode te parsen, oko helemaal in PHP :)

-=[ Murlocs Ate My Boots]=- Sylvanas Alliance - EU - Orosei lvl 100 Paladin

Pagina: 1