صفحة 1 من 4 1234 الأخيرةالأخيرة
النتائج 1 إلى 15 من 55

الموضوع: مسابقة برمجة (1) إرجاع عدد معين من الحروف

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037

    مسابقة برمجة (1) إرجاع عدد معين من الحروف



    مقدمة
    في أحيان كثيرة وتطبيقات مختلفة يكون عندك نص طويل (كتابة) .. ونظرا لظروف عرض هذا النص تحتاج إلى أن تعرض بعض الكلمات وليس كلها وتضيف بعض النقاط مثلا لتوضح أنه مازال للكلام بقية "..." .. من أشهر التطبيقات على ذلك عناوين المقالات في المجلات وأسماء الملفات أو الصور في معارض الصور ومواقع البرامج ..
    المطلوب
    دالة تعطيها نصا معينا بأي عدد من الحروف وتحدد لها عدد الحروف المطلوب إرجاعها لتظهر بالصفحة .. مع مراعاة ألا تعطيك نصا مقطوعا في وسط كلمة من الكلمات .. فليس ظريفا أن تعطيها "منتديات سوالف سوفت" لتعطيك "منتديات سوال..." .. كذلك يفضل أن يكون وقت تنفيذها للمطلوب قصيرا .. لأنها في الغالب سوف تستخدم أكثر من مرة في الصفحة الواحدة ..
    الشروط
    1. أن تكون الدالة بلغة PHP
    2. يفضل أن تكون برمجة أصلية (وليست منقولة) وأن توضع هنا بواسطة مبرمجها
    3. إذا كانت منقولة أن يذكر الموقع الذي نقلت منه لحفظ حقوقه
    4. أن تكون فيها ملاحظات كافية لشرح طريقة عملها للجميع
    5. أن تتم تجربتها قبل وضعها هنا حتى لا تتسبب في مشاكل عند تجريبها بواسطة أي شخص

    القواعد
    1. لا توجد جوائز دنيوية مادية الجائزة هي دعاء المستفيدين من المشاركات لأصحابها
    2. لا يوجد فائز واحد .. كل من يشارك ببرمجة فائز .. وكل من استخدم شيئا من المشاركات فائز






    __________________
    ....
    محمد حسام
    انترنت بلس


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2002
    المشاركات
    1,346


    لم أفهم ما قصدته بالضبط في قسم "المطلوب"
    أرجو أن توضح لي

    تحياتي






  3. #3


    فكرة حلوة .... خلنا نطلع على أفكار وحيل المبرمجين المحترفين


    أنا بأسوي اللى الله يقدرني عليه وأوريكم النتيجة بس لحد يضحك على الأسلوب البرمجي الغبي





    __________________
    فنون لخدمات التصميم والإستضافة

    |||||||||||||||||||||||||||||||||||||||||

    SUPPORT @ FONONHOST.COM
    DESIGN @ FONONHOST.COM

    3arabhost.net للبيع


  4. #4
    عضو سوبر نشيط
    تاريخ التسجيل
    Mar 2003
    المشاركات
    790


    فكرة ممتازة أخي انترنت بلس للفائدة إن شاء الله ..

    كود PHP:
    /*
    Cut v1.0 - Cut some extra letters from the text
    and return the text and the number of extra letters
    Programmed By Dr.no ( Algaher.com )
    */
    function cut($msg,$limit)
    {
    global 
    $msg1,$extra// وضعت متغيرين بالـglobal حتى يمكن الاستفادة منهما بالخارج
    $count=strlen($msg); // متغير عدد حروف النص
    if($count==|| $count<=10// التأكد من طول مناسب للنص
    {
    echo
    "<center><p dir=rtl><font face=tahoma size=3>تعذر وجود نص ! </p></font></center>"// رسالة خطأ
    }
    else
    {
    $msg1=substr($msg,0,$limit); // يقطع من الدالة بمقدار $limit
    $extra=$count-$limit// المتغير extra يوضع فيه عدد حروف الزيادة
    }

    طريقة الاستخدام :
    كود PHP:
    $text "نص نص نص نص نص نص نص";
    cut($text,15);
    echo
    "$msg1";
    echo
    "<br>";
    echo
    "عدد حروف الزيادة هو $extra"
    و السلام عليكم
    Dr.no





    __________________
    دكتور لا

  5. #5


    اقتباس المشاركة الأصلية كتبت بواسطة Dr.no
    فكرة ممتازة أخي انترنت بلس للفائدة إن شاء الله ..

    كود PHP:
    /*
    Cut v1.0 - Cut some extra letters from the text
    and return the text and the number of extra letters
    Programmed By Dr.no ( Algaher.com )
    */
    function cut($msg,$limit)
    {
    global 
    $msg1,$extra// وضعت متغيرين بالـglobal حتى يمكن الاستفادة منهما بالخارج
    $count=strlen($msg); // متغير عدد حروف النص
    if($count==|| $count<=10// التأكد من طول مناسب للنص
    {
    echo
    "<center><p dir=rtl><font face=tahoma size=3>تعذر وجود نص ! </p></font></center>"// رسالة خطأ
    }
    else
    {
    $msg1=substr($msg,0,$limit); // يقطع من الدالة بمقدار $limit
    $extra=$count-$limit// المتغير extra يوضع فيه عدد حروف الزيادة
    }

    طريقة الاستخدام :
    كود PHP:
    $text "نص نص نص نص نص نص نص";
    cut($text,15);
    echo
    "$msg1";
    echo
    "<br>";
    echo
    "عدد حروف الزيادة هو $extra"
    و السلام عليكم
    Dr.no
    100 % عزيزي ولكن ماوصلت الى مربط الفرس

    كيف تمنع قطع الكلمة من المنتصف ,,,, الجاحر للإستضافة مي حلوة تطلع الجاح...

    أنا شكلى بأستعجل في الموضوع واسوية الليلة ,,, عندي فكرة إنشاء الله تكون عملية خايف أحد يطرحها قبلي

    أشكرك على تفاعلك لانك حمستني اشارك في اقرب فرصه





    __________________
    فنون لخدمات التصميم والإستضافة

    |||||||||||||||||||||||||||||||||||||||||

    SUPPORT @ FONONHOST.COM
    DESIGN @ FONONHOST.COM

    3arabhost.net للبيع


  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2002
    المشاركات
    1,346


    يبدو أنكم مستعجلين
    وأنا أيضاً سأنفذ هذه ...
    انتظروني






  7. #7
    عضو فعال
    تاريخ التسجيل
    Jun 2002
    المشاركات
    1,346


    أخي "إنترنت بلس" لقد حللت المسابقة
    وهذه الدالة من صنعي... بسيطة ومبسطة ومستبسطة :nice:
    كود PHP:
    function textcut($text,$num){
            
    $a substr($text,0,$num); // قطع النص بالحد المطلوب
            
    $b strrpos($a," "); // معرفة موقع آخر مسافة في النص المقطوع
            
    $c strlen($text);
            if(
    $num $c){ // التحقق من أن الحد المطلوب قطعه أكبر من عدد حروف النص
                    
    return $text;
            }elseif(
    $num == $c){   // التحقق إذا كان الحد المطلوب قطعه = عدد حروف النص
                    
    return $text;
            }elseif(
    $num $c){ // التحقق إذا كان المطلوب قطعه أقل من عدد حروف النص
                    
    return substr($text,0,$b); //القطع من ما قبل الكلمة
            
    }

    والآن لنأخذ هذا المتغير كتجربة
    كود PHP:
     $sub "السلام عليكم ورحمة الله وبركاته"
    ونمرر المتغير على الدالة ومثلا نريد حتى15
    كود PHP:
    print textcut($sub,15); 
    والآن إذا عددت 15 ستجدها في منتصف كلمة "ورحمة" وستقوم الدالة بقطعها إلا كلمة "عليكم"

    تحياتي للجميع بالتوفيق :nice:






  8. #8
    عضو فعال
    تاريخ التسجيل
    Jun 2002
    المشاركات
    1,346


    يبدو أني سبقت الجميع








  9. #9


    كتبت هذا الكود البسيط .. وهو متوافق مع php4

    كود PHP:
    <?php
    /*
    مثال لإستخدام الكائن
    */
    $word =& new wordCut('منتديات سوالف سوفت'10);
    // طباعة الناتج
    echo $word->result();

    /*
    كائن لقص الجملة بحسبب عدد معين من الحروف.
    برمجة: MOBARMEG <mobarmeg[at]mobarmeg[dot]com>
    البارامترات:
     +$words     : الجملة
     +$size      : مكان قطع الجملة
     @$seperator : الفاصل بعد قطع الجملة
    */
    class wordCut
    {
     
    // متغيرات داخلية
     
    var $_words;
     var 
    $_size;
     var 
    $_seperator;
     var 
    $_i;
     var 
    $_result;

     
    // الدالة الرئيسية - Constructure
     
    function wordCut($words$size$seperator=' ...')
     {
      
    // تسجيل قيم المتغيرات المحلية بالمتغيرات المعطاة
      
    $this->_words $words;
      
    $this->_size = (int) $size;
      
    $this->_seperator $seperator;

      
    // التحقق من أن الحجم أكبر من الصفر
      
    if($this->_size <= 0)
      {
       
    // الحجم أصغر من أو يساوي 0 .. ارجاع false والخروج
       
    return false;

       exit;
      }

      
    // استدعاء الدالة المحلية _parse() للمعالجة
      
    $this->_parse();

      return 
    true;
     }

     function 
    _parse()
     {
      
    // تصفير قيمة المتغير المحلي _i
      
    $this->_i 0;

      
    // الدخول في حلقة مادامت قيمة المتغير المحلي _i لا تساوي 1
      
    while($this->_i != 1)
      {
       
    // التحقق أن الحرف الحالي للحجم المحدد هو فراغ
       
    if($this->_words{$this->_size} != ' ')
       {
        
    // إذا لم يكن فراغ اضافة رقم للحجم المزاح
        
    $this->_size++;
       }
       else
       {
        
    // تم التأكد من العملية .. جعل قيمة _i تساوي 1 للخروج من الحلقة
        
    $this->_i 1;
       }
      }

      
    // تخزين القيمة في المتغير المحلي _result
      
    $this->_result substr($this->_words0$this->_size).$this->_seperator;

      return 
    true;
     }

     function 
    result()
     {
      
    // ارجاع قيمة المتغير المحلي _result
      
    return $this->_result;
     }
    }
    ?>
    وقد كتبت في البداية مثال لطريقة الاستخدام





    __________________
    ArabBB ... SoooooN!

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Mar 2003
    المشاركات
    305


    هذه دالة مطورة من الدالة السابقة التي وضعتها, ومميزاتها:
    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 && $length strlen($string)) ? (($string{intval($length)} == ' ') ? 2) : 0;
        }
        

        switch (
    $check)
        {
            case 
    0:
                
    //إذا كان الطول المحدد أكبر من الصفر وأصغر من مجموع حروف النص سيتم إرجاع النص كما هو
                
    $after_cut $string;
                break;

            case 
    1:
                
    //أما إذا كان الحرف الأخير مسافة, فسوف يقوم بالقطع مباشرة مع إضافة رمز القطع
                
    $after_cut substr($string0$length).$cut_symbol;
                break;
                
            case 
    2:
                
    //وإذا كان الحرف الأخير ليس مسافةً, فسوف يبحث عن أقرب من مسافة بشكل تنازلي, أي بإتجاه بداية النص
                
    for ($i=$length$i>=0$i--)
                {
                    if ( 
    $string{$i} == ' ' )
                    {
                        
    $after_cut substr($string0$i).$cut_symbol;
                        
    $done TRUE;
                        break;
                    }
                }
                
    //إذا لم يجد أي مسافة فسوف يضطر إلى القطع من بعد الطول المحدد
                
    if ( !$done )
                    
    $after_cut substr($string0$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:





    الملفات المرفقة الملفات المرفقة
    __________________
    # مشاريع :
    - الفوائد .. خلاصة العلم والمعرفة
    - غواصة .. اجمع اصدقاءك وابحر بالغواصة

    # مدونتي nawaf.me

  11. #11
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    ماشاء الله لاقوة إلا بالله أنا محتاج وقت أقرأ واجرب واحدة واحدة واشوف وقتها ولسه كمان أنا ما عملتش مشاركة
    سأعود مع نتائج تجربة المشاركات إن شاء الله .. وفي انتظار المزيد من المشاركات ..





    __________________
    ....
    محمد حسام
    انترنت بلس

  12. #12
    عضو فعال
    تاريخ التسجيل
    Jun 2002
    المشاركات
    1,346

  13. #13
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    كود PHP:
    function yousef($string$length){
    if(
    strlen($string) <= $length) return $string// إذا كان طول النص أقصر من أو يساوي الطول المطلوب فلا حاجة للدوشة
    else{ // وإلا...
    $text explode(" "$string); // اقسم النص إلى كلمات من عند المسافات
    $now 0// واحجز عداد عدد الحروف
    $ahmed ""// واحجز كذلك مكان للنص النهائي
    for($i=0$i<count($text); $i++){ // دورة على كل الكلمات اللي في النص
    $now += strlen($text[$i]); // زود عداد عدد الحروف بمقدار عدد حروف الكلمة الحالية
    if($now <= $length)     $ahmed .= $text[$i] . " "// إذا كان الطول المطلوب أقل من أو يساوي عدد الحروف الحالي أضف الكلمة إلى النص النهائي
    }
        return 
    $ahmed "..."// اعط النص النهائي
    }
    }
    // الاستخدام:
    echo yousef('السلام عليكم ورحمة الله وبركاته'12); 






    __________________
    ....
    محمد حسام
    انترنت بلس

  14. #14
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    PHP-Master02
    أرجو تعديل مشاركتك لوضع الملاحظات والشرح بسرعة لأني جهزت صفحة التجربة





    __________________
    ....
    محمد حسام
    انترنت بلس

  15. #15
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    4,037


    ملاحظات مبدئية لتعديل السكريبتات قبل نشر صفحة التجربة (جاهزة حاليا)
    وأنا في غاية السعادة لروح الحماس والتعبير عن الذات التي ظهرت من الجميع ..

    Dr.no
    1- السكريبت يقطع الكلمات في أي مكان بها .. أرجو تعديله لكي لا يقطعها ..
    عند تجربة: إسماعيل بن إبراهيم عليهما السلام
    بعدد حروف: 13
    كانت النتيجة: إسماعيل بن إب ...
    2- السكريبت يعطي رسالة "تعذر وجود نص" إذا كان النص لا يحوي مسافات حتى لو كان عدد الحروف أقل من المطلوب ..
    عند تجربة: إسماعيل
    بعدد حروف: 13
    كانت النتيجة كما ذكرت لك ..

    PHP-Master02
    1- السكريبت يرجع عدد حروف أكبر من المطلوب ..
    عند تجربة: إسماعيل بن إبراهيم عليهما السلام
    بعدد حروف: 13
    كانت النتيجة: إسماعيل بن إبراهيم ...
    2- عند التجربة بعدد حروف أقل من المطلوب ظهر خطأ:
    كود:
    Warning: strpos(): Offset not contained in string. in test.php on line 111
    عند تجربة: إسماعيل
    بعدد حروف: 13
    كانت النتيجة كما ذكرت لك ..
    3- عدم وجود كود تأكد من النص الأصلي عندك هو السبب أن سكريبتك هو أسرع سكريبت في التنفيذ حاليا بس طبعا لازم تاخذ احتياطاتك ..
    4- في انتظار أن تضيف ملاحظات وشرح على الكود حتى يتم اعتماد مشاركتك في المسابقة

    Al Mobarmeg المبرمج
    1- السكريبت يرجع عدد حروف أكبر من المطلوب ..
    عند تجربة: إسماعيل بن إبراهيم عليهما السلام
    بعدد حروف: 13
    كانت النتيجة: إسماعيل بن إبراهيم ...
    2- عند التجربة بعدد حروف أقل من المطلوب تهنج الصفحة تماما وتظل تحمل دون أن تعيد أي شيء ..
    عند تجربة: إسماعيل
    بعدد حروف: 13
    كانت النتيجة كما ذكرت لك ..

    العملاق
    1- السكريبت يرجع عدد حروف أكبر من المطلوب ..
    عند تجربة: إسماعيل بن إبراهيم عليهما السلام
    بعدد حروف: 13
    كانت النتيجة: إسماعيل بن إبراهيم ...

    إنترنت بلس
    انت ليك حساب بعدين





    __________________
    ....
    محمد حسام
    انترنت بلس





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض