wordwrap probleem
Ik heb een probleem.. I'm stuck;)
Ik hoop dat iemand mij hier verder kan helpen.. Het gaat om het volgende:
Ik ben bezig met een eigen forum, maar nu wil ik afvangen dat grote strings die gepost worden niet mijn forum layout verknallen ...
Nu kan ik hier wel wordwrap voor gebruiken, maar ik heb ook ubb codes in me forum , die niet mogen worden afgekapt..
Ik geef een voorbeeld:
abcde[link=http://www.blablablablablablablabla.com]linkjeLINKJEURLtje[/link]
stel ik wil de woorden afkappen bij een woord van 20 karakters, dan moet ik dit krijgen:
eerste regel:
abcde[link=http://www.blablablablablablablabla.com]linkjeLINKJEURL[/link]
2de regel(link afmaken):
[link=http://www.blablablablablablablabla.com]tje[/link]
Met een gewone wordwrap zal dit geburen:
Eerste regel:
abcde[link=http://ww
2de regel:
ww.blablablablablablablabla.com]linkjeLINKJEURL[/link]
Hierdoor zal de ubb code niet meer werken..
Ik moet dus iets hebben dan een wordwrap gaat doen buiten de ubb codes..
Ik ben benieuwd of jullie tips hebben :)
Normaal gesproken zal wordwrap pas na hele woorden afbreken, dus op het punt van een spatie. In jouw voorbeeld zal dus ook de hele eerste regel weergegeven worden. Pas zodra je als 4e parameter true meegeeft, zal er midden in een woord/ubb tag afgekapt worden...
Maar wat jij wilt is een stuk lastiger. Je zult namelijk moeten zorgen dat de functie die je tekst afbreekt eerst controleer of de pointer op dat moment niet tussen een [ en ] van een ubb tag is. Ook zul je ervoor moeten zorgen dat je ubb-functie ook line breaks meeleest bij het matchen van een ubb tag.
Zover was ik ook, maar hoe ga ik dat doen dan?
volgens mij is het een onmogelijke zaak..
Zeg ik nou wat geks als ik zeg eerst door de ubb heen en dan pas wordwrap.
hoe zie je dat voor je dan ?
Ik zal dus zoiets moeten gebruiken:
$tekst = wordwrap($tekst, 10, " ",1);
Maar dan verknalt ie me string na de convert:
abcde<a style="tex t-decorati on:underli ne;" target=_BL ANK href=http: //www.bla. com >linkje</a >enzovoort
Ja dat zij zo denk ik... je moet gewoon op woorden afkappen... niet eerst door de ubb-parser heen halen... of je moet het in je parser verwerken... als je eerst door parser heen haalt komen er nl. spaties in
Ik heb even zitten testen, maar dat valt inderdaad nog niet mee. Ik krijg het idee dat je hier zelf een functie voor zal moeten gaan maken. Lastig.
Ik had zelf ook al een poging gedaan om zelf een functie te maken.. Maar het is bijna onmogelijk..
Wat je ook kan doen met me ubb is bijv. :
[kleur=#ff8080]ditiseenheellang[/kleur][kleur=#ff8080]woord[/kleur][kleur=#ff8080]metkleur[/kleur]
Hiermee kan je verschillende kleuren geven aan 1 woord.
Ik kan dan wel elke keer een wordwrap doen voor elk deel tussen kleur tags, maar dan kan je een vreemd woord krijgen, want stel ik doe :
wordwrap($tekst, 10, " ",1);
Dan krijg ik een verkeerd woord:
ditiseenhewoordmetkleur
Het moet zijn:
ditiseenheellangwoordmetkleur
Gewijzigd op 01/01/1970 01:00:00 door dennis vp
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww