قمت قبل قليل بكتابة هذه الدالة والتي تقوم بعرض عدد معين من الكلمات , فمثلا لو كان لدينا موضوع من 200 كلمة وأردنا أن نعرض فقط 50 كلمة في الصفحة الرئيسية ونكتب ( أكمل قرائة الموضوع ) الخ .. فهذة الدالة تفي بالغرض بأذن الله ..
الدالة :
كود PHP:
// $s هو الموضوع .. // $n هو عدد الكلمات التي أريد أن تظهر .. // $u هو رابط الموضوع .. // $t هو عنوان الموضوع الذي يظهر في الرابط .. function words($s,$n,$u,$t){ $str=explode(' ',$s); $count=(int)(count($str) > $n) ? $n :$count; $count= (count($str) < $n) ? count($str):$count; $input_words=''; for($i=0;$i<=$count;$i++) $input_words.=$str[$i].' '; return ($input_words.='...<a href="'.$u.'" title="'.$t.'">بقية الموضوع </a>'); }
اسئل الله أن تفيدكم ..
وبالطبع اذا كنتم تريدون عرض الموضوع في الرئيسية بدون وسوم html كما في بحث غوغل ..
فاليكم هذا السطر البرمجي الذي وجدته في موقع php للامانة..
كود PHP:
// لنفترض أن الموضوع هو بالمتغير less // فالطريقة لازالة كل اكواد html الموجودة في هذا المتغير هي الكود التالي : $less='<p>القدس في خطر ...</p>'; $less=preg_replace('@<[\/\!]*?[^<>]*?>@si',' ',$less);
اخي مصالحة : انا لا اتعامل ابدا مع قواعد البيانات .. لا افهم فيها شيئا .. قواعد البيانات لدي هي الملفات . حيث اجد التعامل معها سهل جدا ...
لذلك الأمر الذي كتبته لا يجُدي نفعاً معي .
__________________ لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم. للمراسلة : h.3basy@gmail.com القدس
اذا - لا بأس - لنأخذ الدالة التي كتبتها ونرى كيف يمكن ان نكتب دالة ناجحة أكثر ...
لو فرضنا ان لنا نص بطول 1000 كلمة ... فهل تريد من حاسوبك أن يقوم بعمل مصفوفة فيها 1000 خانة فقط كي يستعمل اول 50 ؟؟؟
لا - لكن يمكن تقسيم الجملة في الفراغ ال 50 ... وهكذا نحصل على المقطع وبه 50 كلمة. اي جد مكان الفراغ ال 50 بواسطة strpos ويمكنك اختصار العملية اذا خمنت أو فرضت ان معدل طول الكلمات 4.5 حرف - هكذا يجب ان تبحث عن الفراغ بعد الحرف ال 225 ... وبعدها قم بأخذ القسم الذي تريده بواسطة substr ...
حتى لو لم تكن هذه الدالة ترجع 50 كلمة - وقد ترجع 48 أو 49 أو حتى 51 و 52 ... لكنها عبارة عن سطرين ... وقد تستغرق زمن اقل للعمل.
اذا مرة ثانية ...
نريد 50 كلمة
نبحث عن مكان الفراغ بعد 50*4.5=225 بواسطة strpos
نقسم الجملة بواسطة substr
شكرا اخي مصالحة .. سأجرب ما تفضلت به .
أخي محمد جربت الدالة preg_split كثيرا لكنها لم تعطيني النتيجة دقيقة كما أرغب .
وملاحظة أخرى الدالة strip_tags() تقوم بحذف الوسوم وما بداخل الوسوم .. نحن نريد فقط أن نحذف الوسم وأن نبقي ما بداخلة .. وهو ما لا تفعله هذه الدالة ..
__________________ لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم. للمراسلة : h.3basy@gmail.com القدس
دالتك تقطع اينما وصلت الحرف السادس ... وهذا ما لا نريده ... نحن نريد كلمات كاملة وليس وضع كهذا:
"التقى الرئيس المص" ... بينما ما نريده "التقى الرئيس المصري" ...
وايضاً يوجد مشكلة في اليو تي اف 8 - اذ ان الأحرف العربية تستعمل خانتان لحفظ كل حرف ... واستعمال دالتك قد يعطي شئ كهذا "التقى الرئيس الم╫" ...
طيب يا أخي وأنا كمان متأسف. هذه صورة توضح اي دوال لقواعد البيانات أفضل بالسرعة - انتبه ! ان بعض قواعد البيانات جيدة حين يكون لديك قاعدة بيانات صغيرة ونفسها تكون سيئة حين تكبر ... مثال الاكسس ...
SELECT * , SUBSTRING_INDEX( content, '<hr>', -1 ) AS content
FROM art_articles
__________________
وفقنا الله وإياكم لكل خير
سأصبر حتى يعجز الصبر عن صبري
وأصبر حتى يحكم الله في أمري
وأصبر حتى يعلم الصبر أنني
صبرت على شيء أمر من الصبر