![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 27.02.2009 Ostrzeżenie: (10%) ![]() ![]() |
Witam (mój pierwszy post tutaj więc proszę o wyrozumiałość gdybym napisał coś głupiego - na wszelki wypadek daje do przedszkola) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Zrobiłem stronę www działającą na kilku dziwacznych wersjach językowych - arabski, chiński, japoński (negoist.com -- uwaga strona dla dorosłych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) i mam problem kosmetyczny z wyświetlaniem wstępów do opisów na stronie głównej. Żeby wyświetlić tylko pierwsze 300 znaków opisu bez formatowania robię tak: Kod mb_internal_encoding("UTF-8"); $short_text = mb_substr(strip_tags($pr[text]), 0, 300); Wszystko ok, tylko czasem utnie tekst w środku słowa, co mi się nie podoba i chciałem po prostu obciąć wszystko do pierwszej spacji od końca. napisałem więc prostą linijkę kodu: Kod while($short_text[mb_strlen($short_text)-1]!=' ')$short_text=mb_substr($short_text, 0, -1); Wszystko działa w wersji angielskiej, w chińskich, arabskich itp... się zapętla, czyli nie znajduje spacji (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Próbowałem też zamiast tego mb_substr z "-1" używać: Kod function removeCharAt($str, $int){ return substr_replace($str,"",$int,1); } ale efekt ten sam... Ma ktoś jakiś pomysł na rozwiązanie problemu?? Na razie doszedłem do tego że dla mb mode nie prawidłowo działa operator indeksowania: Kod for($i=0; $i<mb_strlen($short_text); $i++){ echo $short_text[$i]; } zwraca połowę krótszy tekst niż: Kod echo $short_text; w dodatku na końcu jakiś pytajnik, czyli pewnie kawałek znaku... idzie byte po byte nie uwzględniając że znaki mają inną długość... Jakieś zastępstwo dla operatora indeksowania? coś w stylu: $short_text.getChar(index);?? Ten post edytował BlackPig 27.02.2009, 13:05:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 14:32 |