Toon posts:

[php] html code checker, (tabellen)

Pagina: 1
Acties:

Verwijderd

Topicstarter
mensen kunnen in hun profiel (op vote4me.nl) ook <table>'s gebruiken, alleen wil dat nog weleens fout gaan, omdat bepaalde personen een paar tags vergeten o.i.d.

ik gebruik nu dit stukje code om te controlere of de table goed is geopend en afgesloten.
PHP:
1
<?$allowed_tags="<b><i><u><s><font><br><hr><div><img><a><strong><p><pre><span><nobr><ul><li><ol><marquee><s><blink><center>";    if (preg_match ("/\<table/i", $textje)&amp;&amp;preg_match ("/\<\/table\>/i", $textje)) {    $allowed_tags.="<table><tr><td>";    }            $textje=strip_tags($textje,$allowed_tags);    }?>

maar volgend mij kan dit beter, alleen weet ik niet hoe.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Lees alle tags uit, stop ze evt in een array.

Bouw er vervolgens een stack van.
Hou bij welke tag het laatste geopend was en kijk naar de volgende tag.
Stel laatste was:
code:
1
[b]

Als tag "niet de sluiter van laatst geopend"
code:
1
[b][u]<- daar

Plaats die ook op de stack. Waarbij de stack nu dus (b, u) bevat...
Kom je dan es een tag tegen die afgesloten wordt bijv:
code:
1
[b][u][/u]

Dan kan je die u van de stack afhalen (is dan tenslotte afgesloten).
Eventueel kan je hier dus gelijk al controleren dat alles wel netjes in de goede volgorde gesloten wordt.

Aan het eind is, als het goed is, je complete stack leeg :)
Zoniet dan zijn er teveel tags geopend die niet meer gesloten zijn.

Uiteraard mag je ook geen sluitende tags hebben terwijl er niets meer in je stack zit.

Succes :)

Verwijderd

Topicstarter
hmm, toevallig geen voorbeeld van zoiets,
of een adresje waar ik zoiets vind.

ik weet dat het vast wel ergens bestaat, maar waar? dat weet ik niet.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 11 maart 2002 18:55 schreef ludohelder het volgende:
hmm, toevallig geen voorbeeld van zoiets,
of een adresje waar ik zoiets vind.
wel ergens bestaat, maar waar? dat weet ik niet.
Teken het evt es voor jezelf op papier uit :)

Zet een "html-document" neer en bekijk hoe de stack er na elke tag uit zou moeten zien.

Een stack in php kan je simuleren dmv array_push en array_pop.

Verwijderd

Topicstarter
okee, nieuw "probleem"

ik wil dat alle links in een nieuw venster openen, daarvoor gebruik ik deze code:
code:
1
$row[textje] = preg_replace ("/\<a(.*?)href=(.*?)\>/i", "<a href=\\2 target=\"_blank\">",$row[textje]);

maar ik wil dat de links naar een anchor (de links met #) dat die niet openen in een nieuw venster.

hoe doe ik dat?

Verwijderd

Dat hoort niet meer helemaal bij dit topic hè...?

Verwijderd

PHP:
1
<?if(ereg("\<a(.*?)href=\"#",$row[tekstje]));{$row[textje] = preg_replace ("/\<a(.*?)href=(.*?)\>/i", "<a href=\\2 target=\"_blank\">",$row[textje]);}?>

zoiets?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

code:
1
<base target='_blank'>



oid :?

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

En ACM probeerde nog zo lief je tot een mooi stuk zelf bedachte code aan te zetten.

De Truuk van programmeren is niet het doorwerken van tutorials en het zoeken op een adresje, maar dat is het zelf (of met ons) uitdenken en later (wel zelf) uitwerken van een stukje programma. Probeer het eens, zou ik zeggen :)

|_____vakje______|


Verwijderd

Ik was ook opzoek naar zoiets en ik snap hoe ik kan kijken of de html goed is maar nu wil ik graag wel dat de code wordt verbetert door mijn php-script. Het is alleen mogelijk om de html-tags <STRONG>, <EM>, <U>, <UL>, <OL>, <LI>, <A HREF=""> en [img]""[/img] te gebruiken dus misschien wordt het hier door iets makelijk, maar ik zal niet weten hoe ik dit moet realiseren. Kan iemand mij een idee/opzetje geven

Al vast bedankt

Verwijderd

Topicstarter
Op maandag 11 maart 2002 20:04 schreef CyberSnooP het volgende:
En ACM probeerde nog zo lief je tot een mooi stuk zelf bedachte code aan te zetten.

De Truuk van programmeren is niet het doorwerken van tutorials en het zoeken op een adresje, maar dat is het zelf (of met ons) uitdenken en later (wel zelf) uitwerken van een stukje programma. Probeer het eens, zou ik zeggen :)
waar denk je dat ik de hele dag mee bezig ben?

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 12 maart 2002 00:01 schreef ludohelder het volgende:
waar denk je dat ik de hele dag mee bezig ben?
Ah en wil het lukken? :)

Het is vrij lastig werk, dat weet ik iig uit ervaring ;)

Verwijderd

Iemand nog een idee voor mij (3 replys hoger), Ik kom er niet echt uit

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Opzich is fouten altijd verhelpen gewoon onmogelijk. Omdat het fout is kan je softwarematig niet weten wat de gebruiker bedoelt. Je kunt echter bij veel tags wel gokken dat ze de afsluiter zijn vergeten.

Stel je stack bevat <STRONG> en <EM> en je komt vervolgens een </STRONG> tegen mag je wat mij betreft gokken dat ervoor een </EM> had moeten staan. Maar van de andere kant weet je niet of die ook echt recht tegen de afsluitende strong aan moet staan of niet.

Ik denk ook niet dat het echt een strategie is om te proberen de fouten te verbeteren. Zo duidelijke mogelijk aangeven waar het foutgaat en hints geven van wat je software denkt dat er mis is lijkt me ruim voldoende.

|_____vakje______|


Verwijderd

Helaas, Ik kan de gebruiker niet op de fout wijzen aangezien ik gebruik maak van zo'n Iframe in IE voor mijn CMS de html die hier uit komt is echter niet altijd goed. (Meestal gaan de lijst (<UL><OL>) fout). Als ik gewoon de html weet ga geven is alles oke. maar om dat ik de html in een xml bestand zet moet deze valid zijn om getransformeert te kunnen worden.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Misschien ligt het aan mij, maar de reden waarom je je gebruikers niet op fouten kunt wijzen is me onduidelijk.

IE is slim genoeg om wat foutjes te verbeteren naar eigen inzicht (jammer genoeg eigenlijk). Je kunt natuurlijk proberen met zoveel mogelijk truukjes goeie html te produceren, maar waterdicht wordt het nooit.

Probeer voor jezelf duidelijk op te schrijven wat:
• de situaties zijn die fout gaan (bijvoorbeeld. niet afgesloten <LI>)
• een situatie waarin je script zoiets kan herkennen (een <LI> binnen dezelfde <UL> of <OL> terwijl je nog in een ander <LI> zit)
• en tot slot hoe je het kunt verbeteren (eind van de vorige regel een </LI> plaatsen.

Spreekt voorzich, implementeren is lastig en zoals gezegd eigenlijk geen oplossing.

|_____vakje______|


Verwijderd

Op dinsdag 12 maart 2002 21:08 schreef CyberSnooP het volgende:
Misschien ligt het aan mij, maar de reden waarom je je gebruikers niet op fouten kunt wijzen is me onduidelijk.
Met IE kun je een soort van Word achtige omgeving maken met een iframe en het javascript commando CommandExec();, Maar deze maakt dus ongeldige html. Opzich geen probleem want het wordt wel goed weergeven. Maar ik wil alles dus in een xml bestand zetten en dan moeten de tags wel goed genest zijn. Maar ik probeer wel wat op jou adviezen.
Pagina: 1