Łamanie pojedyńczych wyrazów


(Lysy1033) #1

Witam.

Piszę serwis ogłoszeniowy i podczas testów wkleilem jeden wyraz bez spacji i powtorzylem go duzo razy wyglada to tak:

napisnapisnapis....

teraz problem pojawia się taki że jak wstawiam w treść ogłoszenia taki tekst to po wyświetleniu takiego ogłoszenia rozjezdza mi się strona bo taki "napis" nie jest zawijany.... Da się zrobić żeby się zawijał? może za pomocą stylów?


(Kutar 0) #2

Możesz to zrobić na kilka sposobów.

  1. Odpowiednio bawiąc się stylem OVERFLOW możesz zrobić suwak przewijający tę dłuższą treść. Wygląda to jak pływająca ramka, ale to nie jest pływająca ramka, tylko np. DIV z suwakiem;

  2. Za pomocą powyższego stylu możesz również ukryć "wystającą" treść, pozostawiając tylko widoczny "prostokąt" o ustalonych wymiarach;

  3. możesz w PHP pobierać każde słowo z, sprawdzić ile zawiera znaków i ewentualnie podzielić;

Które rozwiązanie preferujesz ? :slight_smile:


(Airborn) #3

za pomocą stylów możesz co najwyżej ukryć zbyt długą część napisu, służy do tego overflown jeżeli potrzebujesz cięcia wyrazów, to musisz już jednak użyć php np. funkcji wordwrap()


(Lysy1033) #4
function zawijacz($text,$nr=100)

    {

        $mytext=explode(" ",trim($text));

        $newtext=array();

        foreach($mytext as $k=>$txt)

        {

            if (strlen($txt)>$nr)

            {

                $txt=wordwrap($txt, $nr, " ", 1);

            }

            $newtext[]=$txt;

        }

        return implode(" ",$newtext);

    }

Skończyło się na takiej funkcji która w tym przypadku jeśli wyraz ma wiecej niż 100 znaków to po setnym wstawia spacje a przegladarka juz zawinie tą (czy tę??) spację.

Funkcje wyłowiłem z linku wyżej co kolega podał. przerobiłem tylko znaczek "-" na " ". w orginale funkcja dodawała myślinik czego przeglądarka już nie łamie. w tej postaci co jest wyżej ładnie działa.