PDA

View Full Version : آموزش: حل مشکل ستاره داخل لوزی در تابع substr برای رشته های فارسی



funpatogh
شنبه 24 مهر 1389, 00:40 صبح
در زمان استفاده از تابع substr در پی اچ پی در صورتی که بخواهید متن فارسی را خلاصه کنید با یک مشکل مواجه می شود و آن این است که در انتهای برخی از جملات، یک علامت سئوال داخل لوزی را مشاهده می کنید.
با یک تغییر کوچک در کد و تغییر تابع substr به mb_substr می توانید این مشکل را حل کنید.
فرض کنید کد زیر را برای محدودیت کاراکتر های minidesc می خواهیم استفاده کنیم.
به جای این کد


echo substr($minidesc,0,150)
از این استفاده کنید


<?php
mb_internal_encoding('UTF-8');
echo mb_substr($minidesc,0,150)
?>

meysamz
یک شنبه 09 بهمن 1390, 13:05 عصر
خیلی جالب بود، اتفاقی به مقاله ای که یکی دو سال خودم نوشتم برخوردم فقط منبع و نام مولفش حذف شد.
نمی دانم چرا بعضی ها با نام مولف و منبع و ... مشکل دارند!

tux-world
یک شنبه 09 بهمن 1390, 13:18 عصر
شرمنده منظورتون از خلاصه كردن چيه؟

AMIBCT
یک شنبه 09 بهمن 1390, 13:55 عصر
اگر افزونه‌ی مورد نظر روی php نصب نباشد از تابع زیر می‌توانید استفاده کنید( منبع: نظرات راهنمای php )

<?php
function substru($str,$from,$len){
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'. $from .'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'. $len .'}).*#s','$1', $str);
}
?>

MSN_Issue
یک شنبه 09 بهمن 1390, 16:05 عصر
اون تابع به این شکل هم قابل استفاده-ست :


<?php echo mb_substr($minidesc,0,150,'UTF-8')?>

tux-world
یک شنبه 09 بهمن 1390, 16:08 عصر
آخرش کسی نگفت این خلاصه کردن یعنی چی

colors
یک شنبه 09 بهمن 1390, 18:10 عصر
آخرش کسی نگفت این خلاصه کردن یعنی چی

درود

به فرض یه متنی رو از بانک میخونی که حدود 1000 کارکتره و تو دوس داری مثلا فقط از کارکتر اول به تعداد 200 کارکتر رو بخونی و نمایش بدی( بیشتر تو سایتهای خبری واسه خلاصه متن مورد استفاده قرار میگیره)