Jeszcze nie wiem jak to zrobię. Mam dwie możliwości, muszę chyba to zostawić na chwile, bo już mózg mi się lansuje.
Poniżej kod dla mających taki sam problem i są bardzie za tym rozwiązaniem z tablicą i szerokością literek

<?php
function szer_litery($lit) {
'a'=>6,
'ą'=>7,
'b'=>6,
'c'=>6,
'ć'=>6,
'd'=>6,
'e'=>6,
'f'=>4,
'g'=>6,
'h'=>6,
'i'=>2,
'j'=>3,
'k'=>5,
'l'=>2,
'ł'=>3,
'm'=>9,
'n'=>6,
'o'=>6,
'ó'=>6,
'p'=>6,
'r'=>4,
's'=>5,
'ś'=>5,
't'=>3,
'u'=>6,
'w'=>8,
'x'=>5,
'y'=>6,
'z'=>6,
'ź'=>6,
'ż'=>6,
'A'=>7,
'B'=>7,
'C'=>8,
'Ć'=>8,
'D'=>7,
'E'=>6,
'F'=>6,
'G'=>8,
'H'=>6,
'I'=>2,
'J'=>5,
'K'=>7,
'L'=>6,
'Ł'=>3,
'M'=>8,
'N'=>7,
'O'=>7,
'Ó'=>7,
'P'=>7,
'R'=>8,
'S'=>7,
'Ś'=>7,
'T'=>7,
'U'=>7,
'W'=>10,
'X'=>7,
'Y'=>7,
'Z'=>7,
'Ź'=>7,
'Ż'=>7,
'!'=>2,
'@'=>11,
'#'=>6,
'$'=>6,
'%'=>9,
'^'=>5,
'&'=>7,
'*'=>4,
'('=>4,
')'=>4,
'_'=>6,
'+'=>6,
'-'=>6,
'='=>6,
'{'=>4,
'}'=>4,
'['=>3,
']'=>3,
':'=>2,
';'=>2,
'?'=>6,
'|'=>2,
'/'=>4,
''=>4,
'<'=>6,
'>'=>6,
'´'=>3,
'.'=>2,
','=>2,
'ˆ'=>3,
'˜'=>3,
"'"=>2,
'“'=>5,
'"'=>5,
'„'=>5
);
//domyslna wartosc jesli nie ma takiej litery
return 4;
} else {
return $t[$lit];
}
}
// przejscie po wszystkich literach
for($i=0; $i<strlen($n['tresc']); $i++) {
// tresc przechowywana w tablicy
$lit = $n['tresc'][$i];
//sumowanie szerokosci danej litery
$szer=$szer+szer_litery($lit);
//jesli napotka <br />
if($n['tresc'][$i]=='<' && $n['tresc'][$i+1]=='b' && $n['tresc'][$i+2]=='r') {
// dodaje linie
$linie++;
// zeruje szerokosc
$szer=0;
// jesli jednak nie wystapilo br
} else {
//dalej zliczna szerokosc porownywana jest z szerokoscia maksymalna,
//jesli ja przekroczy
if($szer>=$szerokosc) {
// dodaje linie
$linie++;
// zeruje szerokosc
$szer=0;
}
}
}
// sprawdzenie czy jeszcze jest jakis wiersz
if($szer>0) {
$linie++;
}
// +2, poniewaz w moim szablonie dodaje jeden Enter oraz wiersz 'czytaj dalej...'
$n['linie']=$linie+2;
?>