"Jeppe Vesterbæk" skrev d. 23-07-02 12:23 dette indlæg :
> Hej gruppe.
>
> Hej har en side med nyheder hentet fra en mySQL database.
> Det skal først siges, at nogle af disse nyheder godt kan indeholde
> html-koder.
>
> Da længden af nyhederne kan variere meget, ønsker jeg at beskrære dem,
så de
> får en nogenlunde ens længde. Dette ville jeg umiddelbart gøre ved at
tælle
> antal ord i posten, men dog også begrænse antal linier, hvis det
skulle være
> en post med mange liniebrud.
> Jeg finder antal ord og liner sådan:
> function linier($streng){
> $linier=explode("\n", $streng);
> $antallinier=count($linier);
> $ord = explode(" ", $streng);
> $antalord = count($ord);
> $t = "ORD: $antalord LINIER: $antallinier";
> return $t;
> }
>
> Mit problem er når jeg skal beskære en post. Hvordan sikrer jeg mig,
at jeg
> ikke beskærer midt imellem f.eks. <b> og </b> ... var det tilfældet,
ville
> resten af siden jo blive fed.
>
> /Jeppe
>
>
Hmm... den eneste løsning jeg lige kan tænke på bliver godt nok lidt
noget spaghetti-kode.
Du kan evt. lave en tæller der tæller forekomsten af <x> og </x> så du
får et array med
----------------------
| tag | forekomster |
=================
| <b> | 2 |
----------------------
| <i> | 1 |
----------------------
| ... | |
----------------------
Hver gang du møder <b> tæller du forekomster en op, når du møder </b>
tæller du en ned. Når du er der hvor du vil skære i teksten løber du
arrayet igennem. Hvis ike alle forekomsterne er 0 ved du at du skal
indsætte nogle slut-tags og hvilke.
Med lidt konstruktiv løkkestruktur kan det lade sig gøre lidt fikst.
Det bedste ville efter min mening være helt at strippe teksten for tags,
det kan du evt. gøre med kommandoen ereg_replace og så derefter beskære
teksten.
Håber det giver lidt input.
// Martin
--
Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"