Hey,
Ik draai al een tijd een web applicatie waar (admin) gebruikers via een HTML editor tekst kunnen invoeren die daarna op de website getoond wordt. De tekst bevat dus HTML tags zoals <b> en <p> en <br />, etc.
De rauwe HTML wordt opgeslagen in een database en daarna via ASP.NET in een Literal control getoond, zodat de formatting (kleur, stijl, etc) getoond wordt.
Het probleem is nu dat veel gebruikers soms (per ongeluk) enters of spaties voor en achter de tekst plaatsen. De verschillende stukjes tekst worden boven elkaar geplaatst op de site, en door deze enters is de afstand tussen de stukjes variabel, wat niet gewenst is.
Wat ik dus eigenlijk wil doen is alle tags trimmen die uiteindelijk als whitespace zouden renderen. Ik zat eerst te denken aan een simpele String.Trim() , maar dat werkt natuurlijk niet; de string bevat zelf geen whitespace maar de tags renderen uiteindelijk wel als whitespace!
Het probleem is nu dat ik heel veel combinaties van tags kan bedenken die uiteindelijk als whitespace renderen, en ik kan ze nu wel allemaal afgaan in mijn code (liefst met regex ofzo) om ze te verwijderen, maar ik zal er altijd een paar vergeten, en vroeg of laat zal iemand precies die combinatie die ik vergeet weten te produceren...
Bijvoorbeeld, deze tags op het einde zijn makkelijk te herkennen en verwijderen:
Maar deze strings (even elke regel apart nemen) zullen ook whitespace op het eind hebben;
Het probleem is hier dat de tags die voor de whitespace zorgen binnen in andere tags zitten die niet weg moeten (</p> en </b> in dit geval), maar gerenderd zullen ze toch voor whitespace zorgen...
Is er een standaard manier om deze whitespace te verwijderen waar ik niet van weet? Of is het echt zo moeilijk als ik nu denk? Dit zal toch wel een bekend probleem zijn dus ik kan me bijna niet voorstellen dat er geen snelle makkelijke oplossing zal zijn...
Note: de HTML editor zal misschien wel een ingebouwde functionaliteit hebben om ervoor te zorgen dat de output geen gerenderde whitespace bevat, dat zou al helpen, maar het probleem is dat er al veel tekst in de database staat die ik dus ook moet trimmen. Het liefst zou ik dus de tekst elke keer trimmen voordat deze op de pagina komt (dus nadat ik hem uit de database laadt). Tenzij het trimmen extreem langzaam is zou dat geen probleem moeten zijn denk ik..?
Bedankt!
Ik draai al een tijd een web applicatie waar (admin) gebruikers via een HTML editor tekst kunnen invoeren die daarna op de website getoond wordt. De tekst bevat dus HTML tags zoals <b> en <p> en <br />, etc.
De rauwe HTML wordt opgeslagen in een database en daarna via ASP.NET in een Literal control getoond, zodat de formatting (kleur, stijl, etc) getoond wordt.
Het probleem is nu dat veel gebruikers soms (per ongeluk) enters of spaties voor en achter de tekst plaatsen. De verschillende stukjes tekst worden boven elkaar geplaatst op de site, en door deze enters is de afstand tussen de stukjes variabel, wat niet gewenst is.
Wat ik dus eigenlijk wil doen is alle tags trimmen die uiteindelijk als whitespace zouden renderen. Ik zat eerst te denken aan een simpele String.Trim() , maar dat werkt natuurlijk niet; de string bevat zelf geen whitespace maar de tags renderen uiteindelijk wel als whitespace!
Het probleem is nu dat ik heel veel combinaties van tags kan bedenken die uiteindelijk als whitespace renderen, en ik kan ze nu wel allemaal afgaan in mijn code (liefst met regex ofzo) om ze te verwijderen, maar ik zal er altijd een paar vergeten, en vroeg of laat zal iemand precies die combinatie die ik vergeet weten te produceren...
Bijvoorbeeld, deze tags op het einde zijn makkelijk te herkennen en verwijderen:
code:
1
2
3
4
5
| <br> <br /> <br></br> <p></p> |
Maar deze strings (even elke regel apart nemen) zullen ook whitespace op het eind hebben;
code:
1
2
| <p>Blabla.. <br /><br /></p> Tekst <b>hier <br /> </b> |
Het probleem is hier dat de tags die voor de whitespace zorgen binnen in andere tags zitten die niet weg moeten (</p> en </b> in dit geval), maar gerenderd zullen ze toch voor whitespace zorgen...
Is er een standaard manier om deze whitespace te verwijderen waar ik niet van weet? Of is het echt zo moeilijk als ik nu denk? Dit zal toch wel een bekend probleem zijn dus ik kan me bijna niet voorstellen dat er geen snelle makkelijke oplossing zal zijn...
Note: de HTML editor zal misschien wel een ingebouwde functionaliteit hebben om ervoor te zorgen dat de output geen gerenderde whitespace bevat, dat zou al helpen, maar het probleem is dat er al veel tekst in de database staat die ik dus ook moet trimmen. Het liefst zou ik dus de tekst elke keer trimmen voordat deze op de pagina komt (dus nadat ik hem uit de database laadt). Tenzij het trimmen extreem langzaam is zou dat geen probleem moeten zijn denk ik..?
Bedankt!