من الموقع: STC تطلق خدمةالتلفزيون التفاعلي المطور (انفجن) وتتيحها خلال شهر رمضان المبارك

 

العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
عضو نشيط جدا
#1  
دالة لعرض عدد معين من الكلمات

بسم الله الرحمن الرحيم :

السلام عليكم :

قمت قبل قليل بكتابة هذه الدالة والتي تقوم بعرض عدد معين من الكلمات , فمثلا لو كان لدينا موضوع من 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 بالعربي

هذا فما كان من توفيق فمن الله وحده وما كان من خطأ اونسيان فمني والشيطان .. والسلام عليكم .






__________________
لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php 
( رابط ) برامج  ( رابط ) ووردبرس 
( رابط )  يوتيوب  ( رابط ) رسائل  ( رابط ) مسجات 

آخر تعديل بواسطة root-system في 09-03-2010 الساعة 06:39 PM.
root-system is offline   قديم 09-03-2010, 06:37 PM
الرد مع إقتباس
عضو فعال
#2  

السلام عليكم ...

افضل من ذلك ان تطلب من قاعدة البيانات فقط ما تريد.

انا استعمل الطريقة التالية...
تدخل الموضوع ... تدخل <hr> في اي مكان تريد قطع الجملة.
ثم في دالة طلب القاعدة ...
يمكنك ان تستعمل
كود:
SELECT * , SUBSTRING_INDEX( content,  '<hr>', 1 ) AS content
			FROM art_articles
هذه برأيي افضل مع انها ليست نفس طريقتك بالمرة - لكن افضل في بناء موقع ناجح اكثر.






__________________
أحب سوالف ولا احب الجدليين!
دليلك للمواقع بثواني ( رابط ) http://wadeni.com 
1000 مزاد ( رابط ) http://1000mazad.com 
موقع نكت مضحكة ( رابط ) http://arab-jokes.net 
massalha is offline   قديم 09-03-2010, 07:25 PM
الرد مع إقتباس
عضو نشيط جدا
#3  

السلام عليكم :

اخي مصالحة : انا لا اتعامل ابدا مع قواعد البيانات .. لا افهم فيها شيئا .. قواعد البيانات لدي هي الملفات . حيث اجد التعامل معها سهل جدا ...
لذلك الأمر الذي كتبته لا يجُدي نفعاً معي .






__________________
لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php 
( رابط ) برامج  ( رابط ) ووردبرس 
( رابط )  يوتيوب  ( رابط ) رسائل  ( رابط ) مسجات 
root-system is offline   قديم 09-03-2010, 10:51 PM
الرد مع إقتباس
عضو فعال
#4  

اذا - لا بأس - لنأخذ الدالة التي كتبتها ونرى كيف يمكن ان نكتب دالة ناجحة أكثر ...
لو فرضنا ان لنا نص بطول 1000 كلمة ... فهل تريد من حاسوبك أن يقوم بعمل مصفوفة فيها 1000 خانة فقط كي يستعمل اول 50 ؟؟؟

لا - لكن يمكن تقسيم الجملة في الفراغ ال 50 ... وهكذا نحصل على المقطع وبه 50 كلمة. اي جد مكان الفراغ ال 50 بواسطة strpos ويمكنك اختصار العملية اذا خمنت أو فرضت ان معدل طول الكلمات 4.5 حرف - هكذا يجب ان تبحث عن الفراغ بعد الحرف ال 225 ... وبعدها قم بأخذ القسم الذي تريده بواسطة substr ...
حتى لو لم تكن هذه الدالة ترجع 50 كلمة - وقد ترجع 48 أو 49 أو حتى 51 و 52 ... لكنها عبارة عن سطرين ... وقد تستغرق زمن اقل للعمل.

اذا مرة ثانية ...
نريد 50 كلمة
نبحث عن مكان الفراغ بعد 50*4.5=225 بواسطة strpos
نقسم الجملة بواسطة substr






__________________
أحب سوالف ولا احب الجدليين!
دليلك للمواقع بثواني ( رابط ) http://wadeni.com 
1000 مزاد ( رابط ) http://1000mazad.com 
موقع نكت مضحكة ( رابط ) http://arab-jokes.net 

آخر تعديل بواسطة massalha في 10-03-2010 الساعة 12:49 AM.
massalha is offline   قديم 10-03-2010, 12:44 AM
الرد مع إقتباس
عضو نشيط جدا
#5  

بداية جزاك الله خيرا على هذا المجهود ..


- يمكننا استخدام التعبيرات القيايسة في تقطيع الكلمات بناء على أي رمز أو رموز .. فهي أقوى و خفيفة في نفس الوقت
كود PHP:
$text 'kjhkh kjhkhk hhhhh    hhhhhh hhhh kkkkk jj jjjk kkk';

$words preg_split("/[ \t]/",$text,5);

array_pop($words); 
* حيث 5 هي عدد الكلمات + 1
* يمكن استخدام explode بدلا من preg_split اذا لم نحتاج للتعبيرات القياسية

- لإزالة وسوم html يمكن استخدام دالة strip_tags
كود PHP:
$text strip_tags('<p>القدس في خطر ...</p>'); 






__________________
محمد حمود.
mr_m is offline   قديم 10-03-2010, 04:09 AM
الرد مع إقتباس
عضو نشيط جدا
#6  

السلام عليكم ورحمة الله وبركاته :

شكرا اخي مصالحة .. سأجرب ما تفضلت به .
أخي محمد جربت الدالة preg_split كثيرا لكنها لم تعطيني النتيجة دقيقة كما أرغب .
وملاحظة أخرى الدالة strip_tags() تقوم بحذف الوسوم وما بداخل الوسوم .. نحن نريد فقط أن نحذف الوسم وأن نبقي ما بداخلة .. وهو ما لا تفعله هذه الدالة ..






__________________
لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php 
( رابط ) برامج  ( رابط ) ووردبرس 
( رابط )  يوتيوب  ( رابط ) رسائل  ( رابط ) مسجات 
root-system is offline   قديم 10-03-2010, 07:49 AM
الرد مع إقتباس
عضو نشيط جدا
#7  

طيب ممكن تجرب هذا؟
كود PHP:
function words($s,$n,$u,$t){
    
    
preg_match("#([^ ]*([^ ]+ *){1,".--$n."})#s",$s,$words);
    
    return 
$words[1].'...<a href="'.$u.'" title="'.$t.'">بقية الموضوع </a>';

|أخي ممكن توضح قصدك بـ ما في داخل الوسوم؟

بخصوص strip_tags فهي تؤدي عملها طالما ان النص نظيف من العلامات الخاصة.
يعني تم تحويل العلامات مثل < الى &lt; وهكذا. هذا ما يفترض في نص خارج من الموقع.






__________________
محمد حمود.

آخر تعديل بواسطة mr_m في 10-03-2010 الساعة 09:16 AM.
mr_m is offline   قديم 10-03-2010, 09:09 AM
الرد مع إقتباس
عضو نشيط جدا
#8  

السلام عليكم ..

شكراً لك اخي محمد .. عملت الدالة السابقة على أكمل وجة .. استفدت من مشاركتك كثيراً .. سيصبح تفكيري دائما متجه نحو التعبيرات القياسية ..

اما بخصوص الدالة strip_tags() فقد كنت مخطئ .. كنت اعتقد انها تمسح النص الموجود داخل الوسوم غير المسموح لها في البارميتر الثاني ..






__________________
لا اله الا أنت سبحانك أني كنت من الظالمين-سبحان الله وبحمده سبحان الله العظيم ( رابط ) php 
( رابط ) برامج  ( رابط ) ووردبرس 
( رابط )  يوتيوب  ( رابط ) رسائل  ( رابط ) مسجات 
root-system is offline   قديم 10-03-2010, 06:56 PM
الرد مع إقتباس
عضو نشيط
#9  

أخ شادي ..

هل يمكن لك أن توضح فقط ايهما اسرع الجلب من ملف او من قواعد البيانات ..

و انواع قواعد البيانات .. يعني ايهما اسرع في التعامل مع جلب النتائج .. mysql - access - SQLite

و أكون لكم من الشاكرين .







آخر تعديل بواسطة assyrian-php في 11-03-2010 الساعة 05:47 AM.
assyrian-php is offline   قديم 11-03-2010, 05:42 AM
الرد مع إقتباس
عضو فعال
#10  

دالتك تقطع اينما وصلت الحرف السادس ... وهذا ما لا نريده ... نحن نريد كلمات كاملة وليس وضع كهذا:
"التقى الرئيس المص" ... بينما ما نريده "التقى الرئيس المصري" ...
وايضاً يوجد مشكلة في اليو تي اف 8 - اذ ان الأحرف العربية تستعمل خانتان لحفظ كل حرف ... واستعمال دالتك قد يعطي شئ كهذا "التقى الرئيس الم╫" ...






__________________
أحب سوالف ولا احب الجدليين!
دليلك للمواقع بثواني ( رابط ) http://wadeni.com 
1000 مزاد ( رابط ) http://1000mazad.com 
موقع نكت مضحكة ( رابط ) http://arab-jokes.net 
massalha is offline   قديم 11-03-2010, 09:12 AM
الرد مع إقتباس
عضو نشيط جدا
#11  

massalha ، اي دالة تقصد؟






__________________
محمد حمود.

آخر تعديل بواسطة mr_m في 11-03-2010 الساعة 09:18 PM.
mr_m is offline   قديم 11-03-2010, 09:17 PM
الرد مع إقتباس
عضو فعال
#12  

يبدو أن assyrian-php قد غير محتوى رده فقد كان سؤاله اننا لماذا لا نستعمل دالة substr ...
وأنا اجبته على ذلك.

تغيير المحتوى - بعد ان اجبته - هذه ليست خطوة جيدة.






__________________
أحب سوالف ولا احب الجدليين!
دليلك للمواقع بثواني ( رابط ) http://wadeni.com 
1000 مزاد ( رابط ) http://1000mazad.com 
موقع نكت مضحكة ( رابط ) http://arab-jokes.net 
massalha is offline   قديم 11-03-2010, 10:00 PM
الرد مع إقتباس
عضو نشيط
#13  

أخ شادي انا آسف قمت بطرح سؤال قبل أن انتبه الى الردود التي كتبت لكنني عدلته خلال ثواني .. كيف لقطتني .

بالنسبة للسؤال كان عن الدالة substr ثم لاحظت ان الشباب يتكلمون عن الكلمات و ليس عن الحروف فانتبهت الى غلطتي و قلت بما اني هنا .. بسألك عن سرعة الجلب .

تقبل أسفي .
دمت مبدعاً أخي شادي

شكراً لك و لكل المشاركين بالموضوع .






assyrian-php is offline   قديم 12-03-2010, 03:48 AM
الرد مع إقتباس
عضو فعال
#14  

طيب يا أخي وأنا كمان متأسف. هذه صورة توضح اي دوال لقواعد البيانات أفضل بالسرعة - انتبه ! ان بعض قواعد البيانات جيدة حين يكون لديك قاعدة بيانات صغيرة ونفسها تكون سيئة حين تكبر ... مثال الاكسس ...


وهذا موقع ايضاً اجرى الفحص:
( رابط ) http://www.sqlite.org/speed.html


وهذا الموضوع في الويكي هو الأفضل ليعطيك كل الحقائق حول كل قواعد البيانات:
http://en.wikipedia.org/wiki/Compari...gement_systems






__________________
أحب سوالف ولا احب الجدليين!
دليلك للمواقع بثواني ( رابط ) http://wadeni.com 
1000 مزاد ( رابط ) http://1000mazad.com 
موقع نكت مضحكة ( رابط ) http://arab-jokes.net 

آخر تعديل بواسطة massalha في 12-03-2010 الساعة 10:25 AM.
massalha is offline   قديم 12-03-2010, 10:22 AM
الرد مع إقتباس
عضو نشيط
#15  

جزاك الله خير على الدالة المفيدة ..






__________________
مبــ PHP@MYSQLــــرمج ومـصـمم
لطلب برمجة راسلنا على الإيميل fa.isl#hotmail.com مع استبدال # بـ@
أبو فيصلz is offline   قديم 12-03-2010, 10:56 AM
الرد مع إقتباس
عضو فعال
#16  

جرب الداله دية

كود PHP:

function word_wrap($text,$end=false,$num=false,$do=false,$start=0) { 
      
$text=preg_replace('/(\s+)/','|&',$text); 
      
$i=0
      
$exp=explode("|&",$text); 
      
$end=($end)?$end:count($exp); 
      
$exp=array_slice($exp,$start,$end); 
      foreach(
$exp as $texts) { 
          
$i++; 
          
$r_text.=$texts." "
          if(
$num!=false and  $i==$num){     
              
$r_text.=$do
              
$i=0
          }   
      } 
    return  
$r_text ;     
  } 






__________________
ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
هذا الايميل لطلب البرمجة فقط helal-egypt@hotmail.com
لمراسلتى
http://elhelaly.arabform.com/
محمدهلال is offline   قديم 12-03-2010, 11:40 AM
الرد مع إقتباس
عضو نشيط
#17  

مشكور شادي و ما قصرت ..

الله يزيدك من علمه و نعيمه






assyrian-php is offline   قديم 13-03-2010, 07:47 PM
الرد مع إقتباس
عضو سوبر نشيط
#18  

إقتباس:
المشاركة الأصلية بواسطة massalha مشاهدة مشاركة
السلام عليكم ...

افضل من ذلك ان تطلب من قاعدة البيانات فقط ما تريد.

انا استعمل الطريقة التالية...
تدخل الموضوع ... تدخل <hr> في اي مكان تريد قطع الجملة.
ثم في دالة طلب القاعدة ...
يمكنك ان تستعمل
كود:
SELECT * , SUBSTRING_INDEX( content,  '<hr>', 1 ) AS content
			FROM art_articles
هذه برأيي افضل مع انها ليست نفس طريقتك بالمرة - لكن افضل في بناء موقع ناجح اكثر.
مشكور يا أستاذ massalha على هذه الدالة

( رابط ) http://dev.mysql.com/doc/refman/4.1/...ubstring-index

الحلو في هذه الدالة نقدر طباعة بقية النص (التفصيل) فقط، نعيّن الرقم -1

كود:
SELECT * , SUBSTRING_INDEX( content,  '<hr>', -1 ) AS content
			FROM art_articles
شكرا لك






haidar is offline   قديم 15-03-2010, 12:56 PM
الرد مع إقتباس
الرد على الموضوع


 

أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
داله تعيد عدد معين من الكلمات من النص محمدهلال PHP 0 11-10-2009 04:52 AM
دالة عرض عدد معين من الكلمات(وليس عدد الاحرف) رومنسي ksa PHP 9 31-07-2009 04:41 AM
استخدام دالة list لعرض محتويات مصفوفة أحمد أبو النصر PHP 6 03-06-2009 08:25 PM
دالة بسيطة لعرض التاريخ والوقت باللغة العربية FlashPack PHP 5 14-11-2008 10:11 PM
دالة شرطية لعرض ملف فلاش aladawi PHP 8 19-11-2006 08:21 PM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 03:41 PM.