PDA

Zobacz pełną wersję : skracanie ciągu znaków w PHP - problem z UTF



hazael
25-06-2008, 17:22
zrobiłem sobie w kodzie źródłowym takie skrocenie:


substr(strip_tags($this->items[$i]->getDescription(), '<img>'), 0, 250)
Skrypt ładnie mi czysci znaczniki i nadmiar słów, ale jest jeden mały problem. Chodzi o polskie czcionki w UTF. Niektóre wyswietlane czcionki w UTF składają się w źródle z 2 znaków. Na przykład gdy trafi mi się na samym koncu litera "ą" zostaje ona wyswietlona jako "krzak". Jak temu zaradzić?

Czy jest jakieś inne rozwiązanie zamiast "substr" - na przykład, by nie skracało ciągu znaków lecz ciągi wyrazów?

Jola
26-06-2008, 05:05
Witam,
ja robię tak:

$data = trim(strip_tags($data));//usunięcie znaczników i spacji
$data = substr($data,0,250);//obcięcie
$a=strrpos($data,"&");//sprawdzenie pozycji początku krzaczka
if($a!=0)
$data = substr($data,0,$a);//ucięcie krzaczkaPozdrawiam

hazael
27-06-2008, 02:00
Dzięki - pomogło, chociaz nie rozumiem, dlaczego sugerujesz byc wpisac znak &:

$a=strrpos($data,"&");
Przeciez w zdaniu taki znak wystepuje praktycznie bardzo rzadko. Nie lepiej zrobic spacje Wtedy ostatnie słowo jest pokazane w całosci :-)?

$a=strrpos($data," ");

ale i tak dzieki - duzo mi to pomogło :-)

Jola
27-06-2008, 02:06
U siebie pokazuję tylko 20 znaków i na końcu 3 kropki. Opcja z "&" dotyczy cięcia w środku wyrazu jeśli kończy się na niepełnym kodzie literki (&...) brak np ";" - wtedy pojawia sie nasz tajemniczy krzaczek, a zamiana na " " jeśli jest więcej ciętego tekstu i jest prawdopodobieństwo, że coś sensownego się wyświetli. Wiedziałam, że będziesz umiał przerobić ten kod na własny użytek , chociaż większość woli gotowce. :)

nexus246
27-06-2008, 11:10
http://pl.php.net/manual/en/function.substr.php#57899