Jak podzielić zadany text na określoną ilość znaków ?

0

Jest jakaś funkcja w php, która podzieli mi zadany text na ilość linii i tak że jeżeli miałaby podzielić wyraz to nie dzieli go a przeniesie ten wyraz do linijki niżej i da wynik ile jest w sumie podzielonych linijek ?

Przykład:
Ala ma kota ale go nie chce bo jest czarny

Podziele go na przykład co 10 znaków (zły wynik):

Ala ma kot
a ale go n
ie chce bo
 jest czar
ny

Podziele go na przykład co 10 znaków (dobry wynik):

Ala ma 
kota ale 
go nie 
chce bo 
jest 
czarny
1

Z oryginalnego tekstu wyciągasz sobie pierwsze 10 znaków i szukasz na jakiej pozycji znajduje się ostatnia spacja. W oryginalnym tekście w jej miejsce wstawiasz znak końca linii. Powtarzasz całą operację, tyle że za każdym razem zaczynasz od miejsca, gdzie wstawiłeś znak końca linii.

0

Trochę zmieniłem podejście i zrobiłem żeby jak np dzielimy tekst na 20 znaków to sprawdzam czym jest znak na pozycji 20. jeśli jest inny niż spacja to szukam najbliższej spacji w lewo i w to miejsce wstawiam znak końca linijki. Od tego miejsca czytam kolejne 20 znaków i tak az do końca tekstu.

0

Czyli zrobiłeś dokładnie to, o czym pisał freemp3 ;)

0

Zrobiłem taką funkcję ale mi się zapętla inie wiem jak zrobić to poprawnie. Mógłby ktoś poradzić ?


$description = "Chcialem podzielic to zdanie na ilosc znakow tak zeby sprawdzic ile linijek a ten podzielony text. I tez tak by nie ucinalo wyrazow co nie ?";

function splitter($text, $posMin, $posMax) {
    $cut = substr($text, $posMin, $posMax);  //wyciana text do zbadania spacji

    if (strlen($cut) <= 0) {  //jesli text jest pusty to juz nic nie robi w nim i mialo zwrocic 0
        return 0;
    } else { 
        $posId = strripos($cut, ' '); //sprawdza pozycje ostatniej spacji
        $tabResult[] = substr($text, $posMin, $posId);  //wrzuca do tablicy text wyciety od posMin do znaku spacji
        splitter($text, $posMin + $posId, $posMax); //wywoluje ponownie funkcje ale zwieksza posMin o wartosc znalezionej spacji posID 
    }
}

$posMax = 20; //ustawiamy ile znakow chcemy maxymalnie w linii
splitter($description,0,$posMax); //wywolujemy funkcje
var_dump($tabResult);
0

Niestety chyba nie da rady z tym wordwrapem bo potrzebuje miec to w tablicy tak zeby potem sprawdzic zliczyc ile linijek ma ten caly text.

0

Nie potrafisz zliczyć ilości przejść do nowej linii? Nie wiem może funkcja substr_count albo explode na podstawie \n
Ogólnie http://php.net/manual/en/ref.strings.php lista funkcji do operowania na stringach. W PHP nie pisze od wieków, ale jakoś informacje dało się odszukać w kilka chwil.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0