Chce podzielic zdanie na dwie linijki, zalozmy ze jedna litera to 13px, maksymalna dlugosc to 590px, zdanie zlozone z 12 wyrazow lacznie zajmuje szerokosc 940px.
Trzy petle: petla1 -> wykona sie tyle razy ile razy zostanie podzielone zdanie 940px / 590px = 2,
pętla2 -> wykona sie tyle razy ile jest slow 12
pętla3 -> wykona sie dopoki laczna suma pikseli nie bedzie wieksza od 590, jezeli suma jest wieksza, zatrzymaj petle, wykonaj petle2 jeszcze raz i kontynuuj petle3 od zatrzymanego wyrazu...
No to tyle jesli chodzi o opis ;]
Wyklepalem cos takiego:
<?php $text = 'Kilka słów w zdaniu które muszą pixelowo zajmować więcej niż określone maxpx'; foreach ($zdanie as $str) { if(mb_strlen($slowo) > 0) { $slowa[] = $slowo; } } $px = 0; $litera = 13; $nr_slowa = 0; while($nr_slowa < $wyrazow) // potrzebne do wyliczenia ilosci linijek { $nr_slowa++; } $maxpx = 590; $i = 0; while ($i < $ilosc_linijek) //w tym przypadku wykona sie dwa razy { $nr_slowa = 0; $litera = 13; $px = 0; while($nr_slowa < $wyrazow) { $px = 0; do { $nr_slowa++; } while($px < $maxpx); } $i++; } ?>
Teoretycznie dziala, ale po wykonaniu wywali mi blad:
Fatal error: Maximum execution time of 30 seconds exceeded in (...) on line 48
I nie mam pojecia dla czego ;]