Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] MB mode i obcięcie ostatniego słowa w stringu, problem z funkcją mb_substr() i zatrzymaniem pętli :)
BlackPig
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 27.02.2009

Ostrzeżenie: (10%)
X----


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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 14:32