[CF-MX] Strip_tags tegenhanger?

Pagina: 1
Acties:

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Wat ik heel erg mis in Coldfusion is een PHP Strip_tags tegenhanger.
Misschien is die er wel, maar weet ik niet welke het is.
Ik ben de hele manual doorgegaan, maar kan niets vinden.

Weet een van jullie misschien of die er is ?

Ik kan die functionaliteit wel in regexxen gaan gooien, maar das wel zoveel werk, daarbij is die van PHP heel erg mooi omdat je op kan geven of tags moeten blijven staan of juist weggehaald moeten worden.

Verwijderd

Op donderdag 18 juli 2002 16:30 schreef Defspace het volgende:
Ik kan die functionaliteit wel in regexxen gaan gooien, maar das wel zoveel werk, daarbij is die van PHP heel erg mooi omdat je op kan geven of tags moeten blijven staan of juist weggehaald moeten worden.
Wat is daar zoveel werk aan? Ik gebruik in Perl bijvoorbeeld altijd
code:
1
<(([^>]|\n)*)>

Is niet helemaal zoals het hoort, maar werkt altijd. Overigens stript dit dus alle HTML :)

Verwijderd

#HTMLEditFormat(string)# :)

Staat in de manual, en bij mij op pag. 901

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Op donderdag 18 juli 2002 17:46 schreef lennert2002 het volgende:

Is niet helemaal zoals het hoort, maar werkt altijd. Overigens stript dit dus alle HTML :)
Ja die heb ik ook wel, maar dat heb ik niet nodig.
Strip_tags is juist zo handig omdat je precies op kan geven welke wel en welke niet.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Op donderdag 18 juli 2002 17:57 schreef Gordijnstok het volgende:
#HTMLEditFormat(string)# :)

Staat in de manual, en bij mij op pag. 901
Is het heus ?
[ik bedoel ik ken hem wel, maar volgens mij zet hij html om in < etc.]

Ik zal eens gaan kijken..

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Ik heb het net nog even gestest met HTMLeditformat.
Maar die doet dus wat ik al verwachte. Die stript geen html tags, maar zet < om in < etc

Verwijderd

Op donderdag 18 juli 2002 18:41 schreef Defspace het volgende:
Ik heb het net nog even gestest met HTMLeditformat.
Maar die doet dus wat ik al verwachte. Die stript geen html tags, maar zet < om in < etc
Maar wat wil je dan :?

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
PHP heeft een enorm handige functie genaamd Strip_tags.

De syntax is:

Strip_tags($string, "html tags")

Nu kan je dus bijvoorbeeld een hele webpagina source door die functie heenhalen en dan haalt hij alle tags die jij niet hebt opgegeven daar uit.

Dus als je het volgende hebt:
code:
1
2
3
4
5
6
7
<html><head><title>Hallo</title></head>
<style>
.styleblablabla
</style>
<body>
<table><TR><TD><B>hallo<P class="hoi">heheheheh</P></b></TD></TR></table>
</body>

En je haalt dat door deze heen:
code:
1
Strip_tags($string, "<B>,</B>");

Dan krijg je als output:
code:
1
<B>hallo</b>

Haal je hem door deze:
code:
1
Strip_tags($string, "<TABLE>,<TR>,<TD>,<B>,</B>, </TD>,</TR>,</TABLE>");

dan krijg je als output:
code:
1
<table><TR><TD><B>hallo</b></TD></TR></table>

Ziet u :)

Verwijderd

In dat geval moet je even kijken naar de ReplaceList function. Syntax is als volgt:

ReplaceList(string, FindWhatList, ReplaceWithList)

Voorbeeld met address als variabele met je code:

#ReplaceList(address, "CA, IN, MI", "California, Indiana, Michigan")#

De laatste parameter kun je dus vervangen door "". Niets dus :)

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
In dat geval moet je even kijken naar de ReplaceList function
Dat kan idd.
Maar dat is niet zo makkelijk zo intelligent te krijgen als die php strip_tags functie.

Over het algemeen zijn webpagina's niet zo simpel als het voorbeeld van daarnet.

Dus je kan wel <STYLE> en </STYLE> weggooien, maar dan laat je alles wat daar tussen stond staan. Strip tags laat alles wat er tussen staat niet staan behalve als er weer een tag tussen staat die weer mag en daar laat ie dan weer wel alles tussen staan.

Ik zeg al, ik kan het wel gaan maken met regex en replaces enzo. Maar dat is een behoorlijk werk(denk ik) en das tijd die ik niet heb eigenlijk.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Op donderdag 18 juli 2002 19:09 schreef Defspace het volgende:

Ik zeg al, ik kan het wel gaan maken met regex en replaces enzo. Maar dat is een behoorlijk werk(denk ik) en das tijd die ik niet heb eigenlijk.
Dat valt toch hartstikke mee. PHP is toch Open Source? Dan kan je toch gewoon even je regexes daaruit halen (wel hetgeen je maakt ook weer opensourcen).

Die functie is ook alleen maar in PHP gekomen omdat iemand de moeite heeft genomen om hem te schrijven.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Dat valt toch hartstikke mee. PHP is toch Open Source? Dan kan je toch gewoon even je regexes daaruit halen (wel hetgeen je maakt ook weer opensourcen).
Ik kan het niet open-sourcen.
Daarbij bestaat die php functie niet uit regexxen, maar uit een C++ string parser die weer gebruik maakt van andere php source functions.

Verwijderd

Heb je wat kunnen vinden in de CF Custom Tags Exchange? Bijna 90% van wat ik nodig heb staat er in. De overige 10% maak ik zelf wel, of los ik op een andere manier op.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Ga ik even over nadenken hoe je dat het beste zou kunnen doen. Ondertussen, wat zou er uit het volgende moeten komen:
code:
1
2
3
4
5
6
7
&lt;html&gt;&lt;head&gt;&lt;title&gt;Hallo&lt;/title&gt;&lt;/head&gt;
&lt;style&gt;
.styleblablabla
&lt;/style&gt;
&lt;body&gt;
&lt;table&gt;&lt;TR&gt;&lt;TD class=&quot;header&quot;&gt;&lt;B&gt;hallo&lt;P class=&quot;hoi&quot;&gt;heheheheh&lt;/P&gt;&lt;/b&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/table&gt;
&lt;/body&gt;


code:
1
Strip_tags($string, &quot;&lt;TABLE&gt;,&lt;TR&gt;,&lt;TD&gt;,&lt;B&gt;,&lt;/B&gt;, &lt;/TD&gt;,&lt;/TR&gt;,&lt;/TABLE&gt;&quot;);

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Op vrijdag 19 juli 2002 02:14 schreef jochemd het volgende:
Ga ik even over nadenken hoe je dat het beste zou kunnen doen. Ondertussen, wat zou er uit het volgende moeten komen:
code:
1
2
3
4
5
6
7
&lt;html&gt;&lt;head&gt;&lt;title&gt;Hallo&lt;/title&gt;&lt;/head&gt;
&lt;style&gt;
.styleblablabla
&lt;/style&gt;
&lt;body&gt;
&lt;table&gt;&lt;TR&gt;&lt;TD class=&quot;header&quot;&gt;&lt;B&gt;hallo&lt;P class=&quot;hoi&quot;&gt;heheheheh&lt;/P&gt;&lt;/b&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/table&gt;
&lt;/body&gt;


code:
1
Strip_tags($string, &quot;&lt;TABLE&gt;,&lt;TR&gt;,&lt;TD&gt;,&lt;B&gt;,&lt;/B&gt;, &lt;/TD&gt;,&lt;/TR&gt;,&lt;/TABLE&gt;&quot;);
Dit:
code:
1
&lt;table&gt;&lt;TR&gt;&lt;TD class=&quot;header&quot;&gt;&lt;B&gt;halloheheheheh&lt;/b&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/table&gt;
Heb je wat kunnen vinden in de CF Custom Tags Exchange? Bijna 90% van wat ik nodig heb staat er in. De overige 10% maak ik zelf wel, of los ik op een andere manier op.
Nee nog niet, maar ik heb nog lang niet alles afgezocht. Ga zo weer ff verder kijken.

Overigens jochemd zou het natuurlijk mooier zijn als hij ook class=header weghaald, maar ga niet te veel tijd er in steken. Het is alleen maar om een extra feature te supporten, niet van levensbelang :) Maar ik had d.m.v strip_tags en wat regexxen in een php project het voor elkaar gekregen dat je zelfs Word html source kon copy pasten. Ging natuurlijk niet altijd in een keer helemaal goed, maar dat was dan kwestie van bijwerken voor user.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Ik heb een best redelijke gevonden..

In combinatie met regex maakt deze er best wat leuks van :)

[url="http://devex.macromedia.com/developer/gallery/info.cfm?ID=CA347645-2830-11D4-AA9700508B94F380&method=Full"]http://devex.macromedia.com/developer/gallery/info.cfm?ID=CA347645-2830-11D4-AA9700508B94F380&method=Full[/url]

Hij is alleen een beetje traag :(
12 seconden voor een beetje redelijke page!

Verwijderd

Met de functies find, reverse en replace heb je de customtag zo in elkaar. Zoeken naar de eerste tag, laatste tag, posities bepalen, en vervolgens begin tot en met eindpositie incl. taglengte verwijderen.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Op vrijdag 19 juli 2002 11:05 schreef Defspace het volgende:

Dit:
code:
1
&lt;table&gt;&lt;TR&gt;&lt;TD class=&quot;header&quot;&gt;&lt;B&gt;halloheheheheh&lt;/b&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/table&gt;
En wat is de reden dat heheheheheh hier wel blijft staan en in je eerdere voorbeeld niet?

Misschien kan je even precies specificeren wat de tag geacht wordt om te doen.

Verwijderd

Op vrijdag 19 juli 2002 13:19 schreef jochemd het volgende:
Misschien kan je even precies specificeren wat de tag geacht wordt om te doen.
Ik zit hier ook eventjes met het idee, wat meot er nou gebeuren :?

1) Geef je nou een tagName op die in zijn geheel incl. tussenliggende content moet worden verwijderd?
2) Moeten alleen de tags verwijderd worden incl. childElements van de tag?
3) etc.etc.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Met de functies find, reverse en replace heb je de customtag zo in elkaar. Zoeken naar de eerste tag, laatste tag, posities bepalen, en vervolgens begin tot en met eindpositie incl. taglengte verwijderen.
Ja en nee, je moet hem wel stack based maken. Dus taglengte verwijderen wordt nog een keer door parser halen. Posities onthouden etc.etc.
En wat is de reden dat heheheheheh hier wel blijft staan en in je eerdere voorbeeld niet?

Misschien kan je even precies specificeren wat de tag geacht wordt om te doen.
De reden is dat ik de eerste uit mijn hoofd heb neergezet en de tweede echt door de strip_tags functie van php heb gehaald.
1) Geef je nou een tagName op die in zijn geheel incl. tussenliggende content moet worden verwijderd?
2) Moeten alleen de tags verwijderd worden incl. childElements van de tag?
3) etc.etc.
Wat ik het liefst wil:

1. Je geeft de tagnamen op die niet verwijderd moeten worden.
2. De overige tags en alles wat daar tussen staat moet in principe verwijderd worden Met de volgende condities

a. Staat die niet toegestane tag tussen en wel toegestane tag ? Haal alleen tag weg en data niet.
b. Staat er in de tagdata en toegestane tag(met data), haal dat dan niet weg.

3. Tag Properties moeten in principe verwijderd worden.

4. Alle tekst die tussen de body tag staat en niet tussen een andere tag moet blijven staan.

b.v.:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
&lt;TD&gt;&lt;P class=&quot;hoi&quot;&gt;Hallo&lt;/P&gt;&lt;/TD&gt;

functie:
Striptags(string, &quot;&lt;TD&gt;&quot;)

wordt:
&lt;TD&gt;Hallo&lt;/TD&gt;

vb2:
&lt;P class=&quot;hoi&quot;&gt;hallo&lt;/P&gt;

striptags(string, &quot;&lt;P&gt;&quot;)

wordt:
&lt;P&gt;Hallo&lt;/P&gt;

vb3:
&lt;html&gt;&lt;head&gt;&lt;title&gt;Titel&lt;/title&gt;&lt;style&gt;blabla&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;h1 class=&quot;h_een&quot;&gt;Hallo&lt;/h1&gt;&lt;HR&gt;He hallo&lt;/body&gt;&lt;/html&gt;

striptags(string, &quot;&lt;title&gt;, &lt;h1&gt;, &lt;hr&gt;&quot;)

wordt:
&lt;title&gt;Titel&lt;/title&gt;&lt;h1&gt;Hallo&lt;/h1&gt;&lt;hr&gt;He hallo

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
Op vrijdag 19 juli 2002 15:24 schreef Defspace het volgende:

Wat ik het liefst wil:

1. Je geeft de tagnamen op die niet verwijderd moeten worden.
2. De overige tags en alles wat daar tussen staat moet in principe verwijderd worden Met de volgende condities

a. Staat die niet toegestane tag tussen en wel toegestane tag ? Haal alleen tag weg en data niet.
b. Staat er in de tagdata en toegestane tag(met data), haal dat dan niet weg.

3. Tag Properties moeten in principe verwijderd worden.

4. Alle tekst die tussen de body tag staat en niet tussen een andere tag moet blijven staan.
Is nummer 4 niet het equivalent van in de UDF <body> aan de lijst met tags toevoegen en in een laatste stap uit de verkregen string de <body> tags weer verwijderen (tenzij ze expliciet al in de lijst met tags stonden)? Dat is voor een implementatie volgens mij namelijk een stuk makkelijker.

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Is nummer 4 niet het equivalent van in de UDF <body> aan de lijst met tags toevoegen en in een laatste stap uit de verkregen string de <body> tags weer verwijderen (tenzij ze expliciet al in de lijst met tags stonden)? Dat is voor een implementatie volgens mij namelijk een stuk makkelijker
Ja dat klopt.

  • jochemd
  • Registratie: November 2000
  • Laatst online: 31-08 19:19
En wat te doen met HTML die voor meerdere interpretaties vatbaar is?
code:
1
&lt;p&gt;test&lt;p&gt;test&lt;/p&gt;

  • Defspace
  • Registratie: Mei 2000
  • Laatst online: 27-08 11:17

Defspace

Administrator

Topicstarter
Op zaterdag 20 juli 2002 23:56 schreef jochemd het volgende:
En wat te doen met HTML die voor meerdere interpretaties vatbaar is?
code:
1
&lt;p&gt;test&lt;p&gt;test&lt;/p&gt;
Er van uitgaan dat de html klopt.

P wordt geopend totdat P wordt afgesloten.
Pagina: 1