النتائج 1 إلى 10 من 10

الموضوع: كيف يمكن استرجاع بعض من نص ما ؟

  1. #1
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361

    كيف يمكن استرجاع بعض من نص ما ؟



    السلام عليكم،

    مثلا لدي ملف نصي مرتب كالتالي :

    1
    عنوان-1
    نص

    عنوان -2
    نص

    عنوان-3
    نص

    2
    عنوان-1
    نص

    عنوان -2
    نص

    عنوان-3
    نص

    ...
    فاريد ان استخرج الجزء رقم 2 من الملف

    ثم

    استخرج العنوان-1 و العنوان-2 والعنوان-3 مع نصوصهم منفصلين كل على حدى ؟

    شكراً.





    __________________
    مجلتي الصغيرة


  2. #2
    عضو نشيط
    تاريخ التسجيل
    Mar 2009
    المشاركات
    131


    تفضل أخي هذا هو الكود
    كود PHP:
    <?php
    $handle 
    = @fopen("inputfile.txt""r");
    $startprocessing false;
    $linecount 0;
    $titleandTestSegmentLinesCount 2;
    $titleOfSecondSection "2";
    $titles = new Array();
    $texts = new Array();
    if (
    $handle) {
        while ((
    $buffer fgets($handle4096)) !== false) {
            if(
    $startprocessing){
            if((
    $linecount titleandTestSegmentLinesCount) == 0)
            
    $titles[] = $buffer;
            else
            
    $texts[] = $buffer;
            
    $linecount++;
            }
            if(
    $buffer == $titleOfSecondSection)
            
    $startprocessing true;
        }
        if (!
    feof($handle)) {
            echo 
    "Error: unexpected fgets() fail\n";
        }
        
    fclose($handle);
    }
    ?>
    المتغيرات المهمة في الكود
    كود PHP:
    $titleandTestSegmentLinesCount 2
    و تعني أن عدد الأسطر للعنوان و النص معا هو 2
    كود PHP:
     $titleOfSecondSection "2"
    و تعني أن القسم الثاني من الملف يبدأ عندما نجد سطر يحتوي فقط على النص 2


    طبعا عليك تغيير اسم الملف

    لم أجرب الملف لكن ان شاء الله يعمل معك

    في حفظ الله





    __________________
    http://servarica.com
    Xen VPS and WHMCS Xen Management Addon modules
    support@servarica.com

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    أهلا أخي idontknow

    الكود يحتاج لبعض التعديل.

    لان سطور القسم المراد استخراجه كانت تخزن بالتناوب بين الجدول title والجدول texts.

    قمت ببعض التعديل ولكن الناتج دائما يكون فارغا.

    فأين الخلل مشكورين؟

    كود PHP:
    <?php
    $handle 
    fopen("txt3.txt""r");
    $startprocessing false;
    $linecount          0;
    //$d = date("d");
    $d=2;
    $titleandTestSegmentLinesCount $d;
    $titleOfSecondSection  $d;
    $titles = array();
    $texts  = array();
    $sect   = array("proverbe""anecdote""dicton""idée");
    if (
    $handle) {
        while ((
    $buffer fgets($handle4096)) !== false) {
            
            if(
    $startprocessing){
                if (
    in_array(trim($buffer), $sect)){
                    
    $section $buffer;
                    echo 
    "section = ".$section."<br />";
                }
                
                switch (
    $section){
                    case 
    "proverbe"$proverbe[] = $buffer;
                    case 
    "dicton"  $dicton[]   = $buffer;    
                    case 
    "anecdote"$anecdote[] = $buffer;
                    case 
    "idée"    $idee[]     = $buffer;    
                }
                
            }
            if(
    $buffer $titleOfSecondSection){
                
    $startprocessing true;
            }    
            
    $linecount++;
        }
        if (!
    feof($handle)) {
            echo 
    "Error: unexpected fgets() fail\n";
        }
        
    fclose($handle);
    }

    echo 
    "<h4>count proverbe = ".count($proverbe)."</h4>";
    echo 
    "<pre>";
    print_r($proverbe);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count anecdote = ".count($anecdote)."</h4>";
    echo 
    "<pre>";
    print_r($anecdote);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count dicton = ".count($dicton)."</h4>";
    echo 
    "<pre>";
    print_r($dicton);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count idée = ".count($idee)."</h4>";
    echo 
    "<pre>";
    print_r($idee);
    echo 
    "</pre>";
    ?>
    :con2:





    الملفات المرفقة الملفات المرفقة
    التعديل الأخير تم بواسطة apitos ; 23-07-2011 الساعة 10:27 PM
    __________________
    مجلتي الصغيرة

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


    تفضل أخي

    هذا يعمل ان شاء الله

    و ان لم يعمل أرسل لي معه ملف التكست الذي تجرب عليه لأتأكد من الحل
    كود PHP:
    <?php
    $handle 
    fopen("txt3.txt""r");
    $startprocessing false;
    $linecount          0;
    //$d = date("d");
    $d=2;
    $titleandTestSegmentLinesCount $d;
    $titleOfSecondSection  $d;
    $titles = array();
    $texts  = array();
    $proverbe  = array();
    $dicton  = array();
    $anecdote  = array();
    $idee  = array();
    $sect   = array("proverbe""anecdote""dicton""idée");
    $section "";
    if (
    $handle) {
        while ((
    $buffer fgets($handle4096)) !== false) {
            
            if(
    $startprocessing){
            switch (
    $section){
                    case 
    "proverbe":
                    
    $proverbe[] = $buffer;
                     break;
                    case 
    "dicton"  
                    
    $dicton[]   = $buffer;
                     break;
                    case 
    "anecdote"
                    
    $anecdote[] = $buffer;
                     break;
                    case 
    "idée"    
                    
    $idee[]  = $buffer;    
                     break;
                }
                 if (
    in_array(trim($buffer), $sect)){
                    
    $section $buffer;
                    echo 
    "section = ".$section."<br />";
                }
                
            }
            if(
    $buffer == $titleOfSecondSection){
                
    $startprocessing true;
            }    
            
    $linecount++;
        }
        if (!
    feof($handle)) {
            echo 
    "Error: unexpected fgets() fail\n";
        }
        
    fclose($handle);
    }

    echo 
    "<h4>count proverbe = ".count($proverbe)."</h4>";
    echo 
    "<pre>";
    print_r($proverbe);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count anecdote = ".count($anecdote)."</h4>";
    echo 
    "<pre>";
    print_r($anecdote);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count dicton = ".count($dicton)."</h4>";
    echo 
    "<pre>";
    print_r($dicton);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count idée = ".count($idee)."</h4>";
    echo 
    "<pre>";
    print_r($idee);
    echo 
    "</pre>";
    ?>






    __________________
    http://servarica.com
    Xen VPS and WHMCS Xen Management Addon modules
    support@servarica.com

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    لم يعمل للاسف.

    الملف النصي مرفق في مشاركتي السابقة.

    شكرا مسبقاً.





    __________________
    مجلتي الصغيرة

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Mar 2009
    المشاركات
    131


    أعذرني أخي لم أنتبه للملف المرفق

    قد طورت السكريبت و هي تعمل كما تريد تمام

    تأذ قسم واخد من الملف وهو القسم رقم 2

    ثم تعبئ في كل مصفوفوة الأستطر التالبعة لهذا العنوان داخل القسم 2 فقط

    ان كنت تريد تعديل على كيفية عملها فأبلغني
    كود PHP:
    <?php
    $handle 
    fopen("txt3.txt""r");
    $startprocessing false;
    $linecount          0;
    //$d = date("d");
    $d=2;
    $titleandTestSegmentLinesCount $d;
    $titleOfSecondSection  "2";
    $titles = array();
    $texts  = array();
    $proverbe  = array();
    $dicton  = array();
    $anecdote  = array();
    $idee  = array();
    $sect   = array("proverbe""anecdote""dicton""idée");
    $section "";
    if (
    $handle) {
        while ((
    $buffer fgets($handle4096)) !== false) {
            if(
    trim($buffer) == ""){
                
    $startprocessing false;
            } 
            if(
    $startprocessing){
            if(!
    in_array(trim($buffer), $sect)){
            switch (
    $section){
                    case 
    "proverbe":
                    
    $proverbe[] = $buffer;
                     break;
                    case 
    "dicton"  
                    
    $dicton[]   = $buffer;
                     break;
                    case 
    "anecdote"
                    
    $anecdote[] = $buffer;
                     break;
                    case 
    "idée"    
                    
    $idee[]  = $buffer;    
                     break;
                }
            }
                 if (
    in_array(trim($buffer), $sect)){
                    
    $section trim($buffer);
                    echo 
    "section = ".$section."<br />";
                }
                
            }

            if(
    trim($buffer) == $titleOfSecondSection){
                
    $startprocessing true;
            }
        }
        if (!
    feof($handle)) {
            echo 
    "Error: unexpected fgets() fail\n";
        }
        
    fclose($handle);
    }

    echo 
    "<h4>count proverbe = ".count($proverbe)."</h4>";
    echo 
    "<pre>";
    print_r($proverbe);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count anecdote = ".count($anecdote)."</h4>";
    echo 
    "<pre>";
    print_r($anecdote);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count dicton = ".count($dicton)."</h4>";
    echo 
    "<pre>";
    print_r($dicton);
    echo 
    "</pre>";

    echo 
    "<br /><br />";
    echo 
    "<h4>count idée = ".count($idee)."</h4>";
    echo 
    "<pre>";
    print_r($idee);
    echo 
    "</pre>";
    ?>






    __________________
    http://servarica.com
    Xen VPS and WHMCS Xen Management Addon modules
    support@servarica.com

  7. #7
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    يعمل بكفاءة عالية اخي الكريم.

    يبقى جمع المصفوفات الناتجة في متغيرة لعرضها.





    __________________
    مجلتي الصغيرة

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


    الكود التالي سوف يستخرج اي قطعة نصية تبدأ برقم + سطر جديد + كلمة + سطر جديد + نص + سرط جديد مرتين ... علما ان السطر الجديد في الملف المرفق هو \r\n وليس \n
    كود PHP:
        $data file_get_contents('/tmp/txt3.txt');
        
    preg_match_all('#(\\d+)\r\n(.+)\r\n(.+)\r\n\r\n#Us'$data$out);
        
    print_r($out); 






    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  9. #9
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    أخي ضيف،

    بارك الله فيك.

    فالامر مع التعابير القياسية مشوق ومختصر.

    ولكن هل يمكن التفضيل اكثر كما في الكود السابق للاخ idontknow ؟

    شكراً.





    __________________
    مجلتي الصغيرة

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Apr 2008
    المشاركات
    361


    اخي daif

    هذا الكود من منتدى اجنبي، يقوم يجلب القسم 2

    ولكن ينقصه لتمام العمل واسخراج الاجزاء الاربعة الباقية باستعمال نفس طريقة التعابير القياسية.

    فخل ممكن المساعدة ؟

    شكراً.

    كود PHP:
    <?php
    define
    ('FILE''txt.txt');
     
    //$d=date("d");
    $d='2';
    $exist false;
     
    $file file_get_contents(FILE);
    $aDay preg_split("/(\r|\n|\r\n){4,}/"$file); //  1 case / day
    // echo var_export($aDay,true);
    foreach($aDay as $index=>$Day){
      if(
    preg_match('/^'.$d.'(\r|\n|\r\n){2,}/'trim($Day))){
         
    $exist true;
        echo 
    $Day;
      }
    }
    ?>






    __________________
    مجلتي الصغيرة





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

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

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