[PHP] Tekst gelijkmatig over kolommen verdelen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 16-09 16:34

Deddiekoel

Gadget nerd

Topicstarter
Ik ben bezig met een nieuws site en ik wil graag een kolommen weergave hanteren.

Wat ik nu graag zou willen doen is de tekst gelijk verdelen over de kolommen. Maar ik kom er dus niet uit. Of ik kap de string af in het midden bij het dichtsbijzijnde zinseinde, of ik doe kap af na een woord. Maar dan wil de laatste regel alleen per toeval helemaal gevuld zijn.

Weet iemand hoe ik dit probleem kan oplossen of is het een hopeloze queeste?

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


Acties:
  • 0 Henk 'm!

Verwijderd

Problemen zijn er om opgelost te worden ;)
Maar ik snap je probleem niet goed. Kan je niet veel makkelijker met een tabel werken? Gewoon 2 kolommen maken en de tekst in die kolommen parsen. Worden je zinnen vanzelf goed afgebroken.

Acties:
  • 0 Henk 'm!

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 16-09 16:34

Deddiekoel

Gadget nerd

Topicstarter
Is waar, maar de de kolommen moeten van gelijke lengte zijn. Dus zoals het in een krant staat. Is er een PHP functie waarmee iets dergelijks is te regelen?

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 17-09 07:55

thomaske

» » » » » »

misschien de functie wordwrap()

Maar verduidelijk eens wat je precies wilt? als je geen mono-spaced font gebruikt, kan je het volgens mij nooit server-side perfect oplossen. Omdat je dan nooit precies kan berekenen hoe veel tekst er op een regel kan..

[ Voor 66% gewijzigd door thomaske op 13-01-2003 15:02 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

Waarom zou je dit serverside op willen lossen? Ik zou gewoon je tekst een in een tabelcel gooien, en dan met css je tekst volledig uitlijnen (align="jusify").

sorry, niet helemaal goed gelezen |:(

[ Voor 15% gewijzigd door Verwijderd op 13-01-2003 15:28 . Reden: foutje... ]


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 12:56
Ja, maar de tekst wil hij in 2 kolommen zetten, dan meot je de hoeveelheid tekst dus wel eerst verdelen over die 2 kolommen.

Acties:
  • 0 Henk 'm!

Verwijderd

ik zou met strlen() nagaan hoeveel tekens er in die string zitten en dan met strrpos() kijken waar je de tekst netjes kan verdelen ivm de eerste spatie. Wat je dus krijgt is iets als dit: (non tested)
PHP:
1
2
3
4
5
6
<?php
$length = strlen($text);
$pos = strpos($text, " ", (int)($length/2));
$kolom1 = substr($text, 0, $pos);
$kolom2 = substr($text, $pos);
?>

[ Voor 9% gewijzigd door Verwijderd op 13-01-2003 15:49 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Helaas is er in HTML geen manier om tekst over kolommen te verdelen, dus als je het wil doen (wat visueel goed kan werken) dan moet je het zelf doen (aan server-kant dus). Dat kan echter niet perfect, aangezien je nooit weet hoe de browser je tekst gaat weergeven en dus ook niet hoeveel regels een bepaalde tekst bij de client inneemt.

In principe is het beste wat je kan doen, gewoon je tekst in twee gelijke delen knippen (of het eerste deel iets groter maken dan het tweede) en hopen dat dat goed uitkomt. In de praktijk zal je er dan soms een paar regels naastzitten, maar je fout wordt kleiner (en minder belangrijk) als je grote stukken tekst opdeelt.

Je zou een betere verdeling kunnen bereiken met behulp van font libraries, waardoor je lokaal kunt berekenen hoeveel ruimte de tekst inneemt. Dit is echter erg ingewikkeld en het is nog geen garantie dat alles goed gaat, aangezien de browser tekst altijd op een gekke manier kan formatteren (al kun je dat met een goede stylesheet voor een deel voorkomen). Ook dit is dus geen volledige oplossing en je kan je beter de extra moeite besparen.

Conclusie: het kan in principe niet perfect, dus neem genoegen met een benadering. Als dat niet acceptabel is, moet je geen kolommen gebruiken. Helaas; dat is een beperking van HTML as we know it.

Acties:
  • 0 Henk 'm!

  • Deddiekoel
  • Registratie: Maart 2000
  • Laatst online: 16-09 16:34

Deddiekoel

Gadget nerd

Topicstarter
IK heb een manier gevonden waar ik zelf nogal tevreden over ben. Het werkt niet perfect hoewel het in theorie wel perfect zou moeten werken...

Maar ik heb het volgende gedaan. Ik maar met PHP een apart tekst bestand aan met daarin de tekst afgebroken op een bepaald aantal tekens mbv de wordwrap() functie.
Dit aparte bestand lees ik dan weer in een array dmv de file() functie. Op deze manier kan ik over het aantal regels van de tekst beschikken. Op deze manier en align='justify' kom ik een heel eind en is het zeker voldoende. Hoewel het nog niet 100% perfect is...

Verlanglijstje: Switch 2, PS5 Pro Most wanted: Switch 2

Pagina: 1