substr یک متن فارسی !

D.A.V.O.O.D

Member
سلام
کسی تابعی داره که طول متن را بگیره و متن را از اون مکان و یا نزدیک ترین جایی که فضای خالی ( space ) داره کات کنه ؟
در واقع می خوام کلمه فارسی نصفه کات نشه !

ممنون می شم کسی کمک کنه
 

P.H.P

Member
PHP:
function faLength($str, $len)
{
    return substr(substr($str, 0, $len), 0, strrpos($str, " ") + 1);
}
echo faLength("کسی تابعی داره که طول متن را بگیره و متن را از اون مکان و یا نزدیک ترین جایی که فضای خالی ( space ) داره کات کنه ؟", 40);
 

Y.P.Y

Well-Known Member
سلام،
عزیز این substr براتون 100% جواب نمیده. باید از mb_substr استفاده کنید با encoding utf-8
 

D.A.V.O.O.D

Member
سلام،
عزیز این substr براتون 100% جواب نمیده. باید از mb_substr استفاده کنید با encoding utf-8
mb_substr واسه متن های کاملا فارسی کاربردی نداره ، واسه متن های به صورت
کد:
&# 1588;
کاربرد داره ، بعد این تابعی که دوستمون برام نوشتن کار اصلیش اینه که متن را از جایی که کلمه تموم می شه کات می کنه .

البته این تابعی که دوستمون نوشتن هم باز نتونست مشکل من رو حل کنه . کلاس تمپلیتم وقتی می خواد جایگزین تگش کنه قالب رو سفید نشون می ده . در واقع لودش نمی کنه . مطمئن هستم که از این substr هست اما نمی دونم چشه
 

D.A.V.O.O.D

Member
کارش که از نامش معلمومه، ولی نه برای رشته های ASCII.
در ضمن از iconv هم می تونید استفاده کنید.
http://ir.php.net/mb_substr

ببینید ، من از تابع mb_substr , substr که گفته شد استفاده کردم اما خروجی به شکل زیر میشه !

تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست تست ت�

همانطور که مشاهده می کنید آخرین کاراکتر یه جورایی هست ! چه پیشنهادی می کنید ؟

ویرایش : iconv_substr هم جواب نداد !
 

Y.P.Y

Well-Known Member
شما فایلتون رو ضمیمه کنید.
بعد اینکه از Database قراره substr بشه یا از Form؟
نگارش PHP تون رو هم بدید.
 

D.A.V.O.O.D

Member
شما فایلتون رو ضمیمه کنید.
بعد اینکه از Database قراره substr بشه یا از Form؟
نگارش PHP تون رو هم بدید.
از دیتابیس !
البته با این توضیح که فیلد دیتابیسم utf8_general_ci هست و بعد از کانکنت شدن به دیتابیس SET NAMES utf8 کرده ام .
اینم اون تکه از برنامه ام :
PHP:
$Text = strip_tags( $r['content'] );
$LenText = mb_strlen( $Text );
                
if( $LenText < 150 )
{
      $ViewText =  $Text;
} else
{
     $ViewText = mb_substr( $Text , 0 , 150 ) . " ..." ;
}
 

D.A.V.O.O.D

Member
ممنونم حل شد .
می بایست قبل mb_substr فانکشن زیر را قرار می دادم .
PHP:
mb_internal_encoding('UTF-8');
 

جدیدترین ارسال ها

بالا