قمت قبل قليل بكتابة هذه الدالة والتي تقوم بعرض عدد معين من الكلمات , فمثلا لو كان لدينا موضوع من 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);
هذا فما كان من توفيق فمن الله وحده وما كان من خطأ اونسيان فمني والشيطان .. والسلام عليكم .
__________________ لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php
( رابط ) برامج ( رابط ) ووردبرس ( رابط ) يوتيوب ( رابط ) رسائل ( رابط ) مسجات
آخر تعديل بواسطة root-system في 09-03-2010 الساعة 06:39 PM.
اخي مصالحة : انا لا اتعامل ابدا مع قواعد البيانات .. لا افهم فيها شيئا .. قواعد البيانات لدي هي الملفات . حيث اجد التعامل معها سهل جدا ...
لذلك الأمر الذي كتبته لا يجُدي نفعاً معي .
__________________ لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php
( رابط ) برامج ( رابط ) ووردبرس ( رابط ) يوتيوب ( رابط ) رسائل ( رابط ) مسجات
اذا - لا بأس - لنأخذ الدالة التي كتبتها ونرى كيف يمكن ان نكتب دالة ناجحة أكثر ...
لو فرضنا ان لنا نص بطول 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() تقوم بحذف الوسوم وما بداخل الوسوم .. نحن نريد فقط أن نحذف الوسم وأن نبقي ما بداخلة .. وهو ما لا تفعله هذه الدالة ..
__________________ لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php
( رابط ) برامج ( رابط ) ووردبرس ( رابط ) يوتيوب ( رابط ) رسائل ( رابط ) مسجات
شكراً لك اخي محمد .. عملت الدالة السابقة على أكمل وجة .. استفدت من مشاركتك كثيراً .. سيصبح تفكيري دائما متجه نحو التعبيرات القياسية ..
اما بخصوص الدالة strip_tags() فقد كنت مخطئ .. كنت اعتقد انها تمسح النص الموجود داخل الوسوم غير المسموح لها في البارميتر الثاني ..
__________________ لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php
( رابط ) برامج ( رابط ) ووردبرس ( رابط ) يوتيوب ( رابط ) رسائل ( رابط ) مسجات
دالتك تقطع اينما وصلت الحرف السادس ... وهذا ما لا نريده ... نحن نريد كلمات كاملة وليس وضع كهذا:
"التقى الرئيس المص" ... بينما ما نريده "التقى الرئيس المصري" ...
وايضاً يوجد مشكلة في اليو تي اف 8 - اذ ان الأحرف العربية تستعمل خانتان لحفظ كل حرف ... واستعمال دالتك قد يعطي شئ كهذا "التقى الرئيس الم╫" ...
طيب يا أخي وأنا كمان متأسف. هذه صورة توضح اي دوال لقواعد البيانات أفضل بالسرعة - انتبه ! ان بعض قواعد البيانات جيدة حين يكون لديك قاعدة بيانات صغيرة ونفسها تكون سيئة حين تكبر ... مثال الاكسس ...
وهذا موقع ايضاً اجرى الفحص: ( رابط ) http://www.sqlite.org/speed.html