برگزیده های پرشین تولز

راه حل مشکل ادامه مطلب؟؟

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
میدونم که راه حلش توی یکی از تاپیک ها بود ولی هرچی گشتم پیداش نکردم! میخوام متنی مثل این:
برای ما و شما
که یونیکد هست. از یه تعداد کاراکتر به بعد نصف بشه (همون ادامه مطلب). منتها بعضی اوقات چون یونیکد اندازهش دوتا کاراکتره اینجوری میشه:
یعنی یه مربع میاد آخر متن بریده شده. راه حلش رو دارید؟
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
rain[1].gif
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
برای نصف نشدن کاراکترهای یونیکد معمولاً از توابع _mb استفاده میشه. برای اینکه چند کلمه از اول نوشته رو جدا کنی به نظر من بهترین راه باز هم عبارات باقاعده است:
PHP:
preg_match('/^(\w*\s*){3}/u', $subject)
این کد سه کلمه اول رو برمیگردونه.
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
برای نصف نشدن کاراکترهای یونیکد معمولاً از توابع _mb استفاده میشه. برای اینکه چند کلمه از اول نوشته رو جدا کنی به نظر من بهترین راه باز هم عبارات باقاعده است:
PHP:
preg_match('/^(\w*\s*){3}/u', $subject)
این کد سه کلمه اول رو برمیگردونه.
ممنون. ولی من تعداد حرف (کاراکتر) مد نظرمه نه کلمه. با mb_substr هم سعی کردم ولی نمیدونم چرا جواب نمیده! بازم نصفه نیمه میده بیرون. شاید مشکل از اینکدینگ متن داخل دیتابیس باشه؟ متون داخل دیتابیس بصورت utf8_persian ذخیره شدن منتها بازم mb_ ها جواب نمیدن :/
 

Mehdi

مدیر بازنشسته
تاریخ عضویت
1 آگوست 2004
نوشته‌ها
5,602
لایک‌ها
49
محل سکونت
Anywhere
ممنون. ولی من تعداد حرف (کاراکتر) مد نظرمه نه کلمه. با mb_substr هم سعی کردم ولی نمیدونم چرا جواب نمیده! بازم نصفه نیمه میده بیرون. شاید مشکل از اینکدینگ متن داخل دیتابیس باشه؟ متون داخل دیتابیس بصورت utf8_persian ذخیره شدن منتها بازم mb_ ها جواب نمیدن :/
بهتر نیست با کلمه جدا کنی ؟
کاراکتر زیاد جالب نیست , مثلا بزار بعد 20 تا کلمه جدا کنه , اینجوری کاراکتر بعدی space میشه دیگه مشکلی پیش نمیاد !!

به هرحال ,
اگه از mb_substr استفاده میکنی , قبل استفاده از اون , اینو بزار :
PHP:
mb_internal_encoding("UTF-8");
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
بهتر نیست با کلمه جدا کنی ؟
کاراکتر زیاد جالب نیست , مثلا بزار بعد 20 تا کلمه جدا کنه , اینجوری کاراکتر بعدی space میشه دیگه مشکلی پیش نمیاد !!

به هرحال ,
اگه از mb_substr استفاده میکنی , قبل استفاده از اون , اینو بزار :
PHP:
mb_internal_encoding("UTF-8");
آخه مشکل اینجاست که ممکنه جمع کلمات بیشتر از اون حدی بشه که میخوام و از فضا بزنه بیرون...
/
ادیت: ممنون درست شد :دی
 

firebird

Registered User
تاریخ عضویت
2 جولای 2005
نوشته‌ها
1,424
لایک‌ها
10
سن
46
ممنون. ولی من تعداد حرف (کاراکتر) مد نظرمه نه کلمه. با mb_substr هم سعی کردم ولی نمیدونم چرا جواب نمیده! بازم نصفه نیمه میده بیرون. شاید مشکل از اینکدینگ متن داخل دیتابیس باشه؟ متون داخل دیتابیس بصورت utf8_persian ذخیره شدن منتها بازم mb_ ها جواب نمیدن :/
این کد چند کلمه اول رو حداکثر تا 30 حرف جدا میکنه:
PHP:
$result = preg_replace('/^(.{1,30})(\s|$)/u', '\1', $subject);
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
41
محل سکونت
یه خورده اونورتر
اونم با wordwrap حل میشه ;)
آخه من از height هم لیمیت دارم :lol: سایتم توی امضامه نگاه بنداز، همون boxهای آخر صفحه...
این کد چند کلمه اول رو حداکثر تا 30 حرف جدا میکنه:
PHP:
$result = preg_replace('/^(.{1,30})(\s|$)/u', '\1', $subject);
ممنون. اینم تست میکنم
icon12.gif
 

hossein_asp

کاربر تازه وارد
تاریخ عضویت
31 مارس 2005
نوشته‌ها
639
لایک‌ها
0
سن
39
محل سکونت
جایی که خدا نباشد
خواهش میکنم. کتاب عبارات باقاعده رو تموم کردم. ایشالله چاپ که بشه خودتون این جور کدها رو راحت مینویسید.
بسیار عالی میگم امضا هم میکنی بهمون هدیه بدی :p
 

hossein_asp

کاربر تازه وارد
تاریخ عضویت
31 مارس 2005
نوشته‌ها
639
لایک‌ها
0
سن
39
محل سکونت
جایی که خدا نباشد
بالا