AL Master الــمــديــر الــعــامــ
المساهمات : 646 تاريخ التسجيل : 10/11/2010
| موضوع: دالة اقتصاص النص بطريقة احترافية وسريعة جدا الجمعة نوفمبر 12, 2010 1:07 pm | |
| ه في هذه المقالة سنتعرف على كيفية اقتصاص جزء من النص ولكن بطريقة سريعة واحترافية وباعتقادي انها الافضل من حيث استخدام قوة اللغة بالتعامل مع النص على انه مصفوفة احرف ساضع الكود وسيتم شرحه بالتفصيل رمز PHP: function cutstr($str, $length){
$len=strlen($str); if ($length>=$len) { return $str; } $ret=''; $str.=' '; for ($i=0;$i<$len;$i++){ if ($i>=$length and $str{$i}==' ') { return $ret.@func_get_arg(2); } else{ $ret.=$str{$i}; } } } echo cutstr('DWAL.BIZ',5,'..');
في البداية اعلنا عن الدالة وهيا cutstr ثم في السطر التالي رمز PHP: $len=strlen($str);
اضفنا الى السلسلة النصية فراغ بحيث اذا لم يوجد فراغ ارجعت السلة كاملة رمز PHP: $str.=' ';
حصلنا على عدد الاحرف ووضعناها في متغير ثم قمنا بالسطر التالي بفحص القيمة اذا كان عدد الاحرف المطلوب اكبر او تساوي عدد الاحرف للنص نقوم بارجاع كافة النص رمز PHP: if ($length>=$len) { return $str; }
ثم قمنا بتعيين متغير للنص الجديد رمز PHP: $ret='';
ثم قمنا بالسطر التالي بالقيام بتكرار بحسب عدد الاحرف رمز PHP: for ($i=0;$i<$len;$i++){
ثم في السطر التالي رمز PHP: if ($i>=$length and $str{$i}==' ') { return $ret.@func_get_arg(2); }
وضعنا شرط اذا كان رقم التكرار اكبر او يساوي العدد المطلوب وكان الحرف التالي هو حرف الفراغ نقوم بانهاء الدالة واعادة القيمة اما مع اضافة قيمة البارمتر الثالث اذا وجد بنهاية النص عبر الدالة رمز PHP: @func_get_arg(2);
والتي تعيد البارمتر المحدد وهيا تبداء من صفر حسب مبدا المصفوفات ثم اذا لم يتم الوصول الى العدد المطلوب نقوم باسناد الحرف الجديد الى المتغير $ret وبذلك نص الى نهاية الدالة والله ولي التوفيق ملاحظة ان لغة البي اتش بي تعمد بالتعامل مع النص على انه مصفوفة احرف وللوصول الى اي حرف معين نقوم بوضع اسم المتغير ثم قوسي حصر ثم رقم الحرف وبذلك نصل الى الحرف المطلوب مثال رمز PHP: $e='abc'; echo $e{1};
او يمكنك استخدام الدالة التالية رمز PHP: function cutstr($str, $length){
$len=strlen($str); if ($length>=$len) { return $str; } $str.=' '; for ($i=0;$i<$len;$i++){ if ($i>=$length and $str{$i}==' ') { return substr($str,0,$i).@func_get_arg(2); } } } | |
|