هذه دالة مطورة من الدالة السابقة التي وضعتها, ومميزاتها:
1- قطع النص بطريقتين :
أ) تحديد طول محدد.
ب) تحديد نسبة مئوية لمقدار النص الذي تريد قطعه.
2- القطع عند نهاية الكلمة.
هذي هي الدالة, وأيضاً مرفقة :
كود PHP:
function SmartCut($string, $length)
{
//الرمز الذي يوضع بعد النص المقطوع
$cut_symbol = "...";
//التأكد إذا كانت طول المحدد للقطع نسبة مئوية أو عدد صحيح
if( ereg("%", $length) )
{
//حذف علامة النسبة المئوية
$percent = str_replace("%", "", $length);
//حساب عدد الحروف من النسبة المئوية
$length = round(strlen($string)/(100/intval($percent)));
$check = 2;
}
else
{
//1- إذا كان الطول المحدد صحيحاً أي أكبر من الصفر وأصغر من مجموع حروف النص
//+ يتم التأكد من آخر حرف, إذا كان مسافة, سيتم تعيين القيمة 1
//+ وإذا كان غير ذلك سيتم تعيين القيمة 2
//2- أما إذا كان الطول المحدد غير صحيح, سوف يتم تعيين القيمة 0
$check = ($length > 0 && $length < strlen($string)) ? (($string{intval($length)} == ' ') ? 1 : 2) : 0;
}
switch ($check)
{
case 0:
//إذا كان الطول المحدد أكبر من الصفر وأصغر من مجموع حروف النص سيتم إرجاع النص كما هو
$after_cut = $string;
break;
case 1:
//أما إذا كان الحرف الأخير مسافة, فسوف يقوم بالقطع مباشرة مع إضافة رمز القطع
$after_cut = substr($string, 0, $length).$cut_symbol;
break;
case 2:
//وإذا كان الحرف الأخير ليس مسافةً, فسوف يبحث عن أقرب من مسافة بشكل تنازلي, أي بإتجاه بداية النص
for ($i=$length; $i>=0; $i--)
{
if ( $string{$i} == ' ' )
{
$after_cut = substr($string, 0, $i).$cut_symbol;
$done = TRUE;
break;
}
}
//إذا لم يجد أي مسافة فسوف يضطر إلى القطع من بعد الطول المحدد
if ( !$done )
$after_cut = substr($string, 0, $length).$cut_symbol;
break;
}
return $after_cut;
}
مثال 1 :
كود PHP:
/*******************************
مثال 1 :القطع بطول محدد
*******************************/
echo SmartCut("إذا رأيت نيوب الليث بارزة", 10);
مثال 2 :
كود PHP:
/**********************************
مثال 2 :القطع بالنسبة المئوية
**********************************/
$big_string = <<<STR
"لو أنكم توكلتم على الله حق توكله لرزقكم كما يرزق الطير تغدو خماصا وتروح بطانا"[صحيح ابن ماجه] فلم يضمن لها الرواح وبطونها ممتلئة إلا بعد غدوها، الخروج فجرا في طلب الرزق، لا أن يصحو في أي ميعاد.
"ومن بات كالا من عمله بات مغفورا له"[ضعيف]
- وكان علي ابن أبي طالب -رضي الله عنه- يقول: الصانع أحب إلي من العابد؛ لأن نفعَ العبادة مقصور على صاحبها، أما الصانع فنفعه للناس عامة.
ثم يقول: ما أجمل أن يجعل الخياط إبرته مسبحته، وأن يجعل النجار منشاره تكبيره.
STR;
echo SmartCut($big_string, '50%');
والحمد لله رب العالمين
وبإنتظار أفكار جديدة .. والمنافسة ما شاء الله بتشتد, دخلنا في الكلاسات, وشغل الاحتراف
العقول العربية تثبت دائماً تفوقها :nice: