
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

Ż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);
$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

Próbowałem też zamiast tego mb_substr z "-1" używać:
Kod
function removeCharAt($str, $int){
return substr_replace($str,"",$int,1);
}
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];
}
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);??