Salman_MP
Member
سلام
اینو نوشتم چون لازمش داشتم. بعد یادم اومد که چند بار اینجا یه چیزایی خونده بودم که دوستان با نوشتنش مشکل داشتن. مثلاْ چون کاراکترهای یونیکد دوبایتی هستن اگر از وسط قطعشون کنیم یه چیزای الکی نشون میده که کاراکترهای نمایشی نیستن !؟
حالا اینو ببینین و اگر ایرادی هم داشت بگین .
یه ایرادی که داره اینه که طول رشته های یونیکد رو نصفه حساب میکنه یعنی اگر بگی به طول ۲۰ و تلورانس ۴ به طول 10 و تلورانس 2 حساب میکنه ...
اینو نوشتم چون لازمش داشتم. بعد یادم اومد که چند بار اینجا یه چیزایی خونده بودم که دوستان با نوشتنش مشکل داشتن. مثلاْ چون کاراکترهای یونیکد دوبایتی هستن اگر از وسط قطعشون کنیم یه چیزای الکی نشون میده که کاراکترهای نمایشی نیستن !؟
حالا اینو ببینین و اگر ایرادی هم داشت بگین .
یه ایرادی که داره اینه که طول رشته های یونیکد رو نصفه حساب میکنه یعنی اگر بگی به طول ۲۰ و تلورانس ۴ به طول 10 و تلورانس 2 حساب میکنه ...
PHP:
function cut_str($str, $length, $tolerance)
{
$length --;
$len = strlen($str);
if ($length > $len)
return $str;
else
{
$i = $length - $tolerance;
if($i < 0) $i = 0;
while($i <= ($length + $tolerance))
{
if(ctype_space($str[$i]))
return substr($str, 0, $i)." ...";
else
$i++;
}
if(ctype_alnum($str[$i]))
return substr($str, 0, $i)." ...";
else
return substr($str, 0, $i-1)." ...";
}
}
آخرین ویرایش: