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

الموضوع: كيفية استبعاد ملفات من المسح ؟

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

    كيفية استبعاد ملفات من المسح ؟



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

    لدي الكود التالي لمسح كل الملفات الموجودة في مجلد tempo :

    كود PHP:
    $contenu = array(); 
      
    $ressources dir("tempo/"); 
        while(
    $lecture $ressources->read()){ 
            if(
    $lecture != "." && $lecture != ".."){ 
                
    $contenu[] = $lecture
            } 
        } 
        
    $ressources->close(); 
     
        foreach(
    $contenu as $v){ 
          @
    unlink("tempo/".$v); 
        } 
    ولكن اريد تطويره ليسثني مسح مثلا ملفات ذات اللاحقة html وzip.

    كيف يكون ذلك مشكورين ؟





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


  2. #2


    يمكنك إستخدام عدة طرق لذلك ، و لعل أبسط الطرق بالنسبة لي هي الحصول على إمتداد الملف قبل حذفه ، مثل :
    كود PHP:
    preg_replace("/^.*\\.([^.]+)$/D"'$1''FILENAME.zip'
    بإستخدام التعابير القياسية .

    أو شيء مثل
    كود PHP:
     substr(strrchr('FILENAME.zip''.'), 1
    ثم تستثني الملفات التي لها الإمتدادات المرغوبة من الحلقية

    أما لو أردت التحكم أكثر فيمكنك إستخدام دالة glob
    هذه الدالة تجلب لك الملفات التي تريدها على شكل مصفوفة
    حيث يمكنك الحصول على الملفات ذات الإمتداد zip بشيء مثل :
    كود PHP:
    glob$path '*.zip' ); 
    ثم تستثنيها في مصفوفتك .


    الطرق كثيرة و أنت الحَكَم .

    بالتوفيق .






  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2005
    المشاركات
    518


    كود PHP:
    function is_wanted_file($filename){

     
    $wanted = array('zip','html');
     
     
    $arr explode('.',$filename);
     
    $arr array_reverse($arr);
     return (
    in_array(strtolower($arr[0]), $wanted)) ? true:false;
    }

    $contenu = array(); 
      
    $ressources dir("tempo/"); 
        while(
    $lecture $ressources->read()){ 
            if(
    $lecture != "." && $lecture != ".." && !is_wanted_file($lecture){ 
                
    $contenu[] = $lecture
            } 
        } 
        
    $ressources->close(); 
     
        foreach(
    $contenu as $v){ 
          @
    unlink("tempo/".$v); 
        } 
    اتمنى ان تستفيد





    التعديل الأخير تم بواسطة ALaa462 ; 30-03-2011 الساعة 02:53 AM سبب آخر: تعديل بسيط
    __________________
    اللهم أعز الاسلام و المسلمين

  4. #4


    هناك مشكلة في الدالة التي وضعتهاأخي الكريم ،
    لاحظ لو كان هناك ملف إسمه file.php.zip
    فسيتم استثناء ملفات ال php ايضا
    أنت إستخدمت explode و هي ليست الدالة الجيدة لجلب إمتداد للملفات (على الأقل بطريقتك)
    الأفضل إستخدام التعابير القياسية مثل ما وضحت أعلاه أو شيء مشابه لذلك .

    ملاحظة : array_reverse و ليس array_revers

    بالتوفيق للجميع .






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


    ارسل الي هذا الكود وينفع لمسح الملفات حسب اللاحقة.

    كود PHP:
    <?php
    $extension 
    = array('zip','rar');
    $contenu = array();
      
    $ressources dir("tempo/");
        while(
    $lecture $ressources->read()){
            if(
    $lecture != "." && $lecture != ".."){
                
    $contenu[] = $lecture;
            }
        }
        
    $ressources->close();
     
        foreach(
    $contenu as $v){
            
    $ext pathinfo("tempo/".$v,PATHINFO_EXTENSION);
            if(
    in_array($ext,$extension)){
                @
    unlink("tempo/".$v);
            }
        } 
    ?>
    ولكن إذا اردنا عدم مسح ملفات باسمائها ولاحقاتها معا ؟

    مثلا لا اريد ان امسح كل الملفات التي تحوي اسما كـ : news والتي لاحقتها zip.

    كيف سيكون العمل ؟

    ملفات الـ news التي لدي صيغتها هكذا مثلاً :

    news1.zip
    news2.zip
    t_news_1.zip
    t_news_2.zip

    الكلمة المشتركة بينهم تكون هكذا :

    *news*

    شكراً.





    التعديل الأخير تم بواسطة apitos ; 30-03-2011 الساعة 02:02 AM
    __________________
    مجلتي الصغيرة

  6. #6
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2005
    المشاركات
    518


    صحيح أخ خالد, كتبت الدالة على عجل و الصحيح array_reverse وتم تصحيحها

    اما عن استثناء الملفات فسيتم استثناء الملف file.php.zip لأن ببساطة لاحقته هي zip حيث تم تم تعريف لواحق الملفات التي لا نريد حذفها ضمن الدالة التي عرفناها مسبقاً

    كود PHP:
    $wanted = array('zip','html'); 
    فسيتم استثناء ملفات ال php ايضا
    لا أعتقد ملفات ال php ستكون مستثناة و ستحذف أيضاً

    وطبعاً هناك عدة طرق للوصول وكل شيخ و له طريقته





    __________________
    اللهم أعز الاسلام و المسلمين

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


    لمعرفة اللاحقة يوجد دالة pathinfo
    http://php.net/manual/en/function.pathinfo.php
    تدخل لها في البارمتر الثاني
    PATHINFO_EXTENSION
    **كما قال اﻷخ apitos**


    كنت ايضًا ساذكر الدالة glob كما ذكر اخي خالد
    بالمناسبة خالد مبروك اﻻسم الجديد
    ﻻرجاع الملفات في المجلد والمجلدات الفرعية يمكن ايضًا ان تستعمل:
    http://www.php.net/manual/en/class.r...ryiterator.php





    التعديل الأخير تم بواسطة ahmad sadiq ; 30-03-2011 الساعة 03:14 AM

  8. #8


    أحمد : بارك الله فيك

    مثلا لا اريد ان امسح كل الملفات التي تحوي اسما كـ : news والتي لاحقتها zip.
    عند جلب إسم الملف تحقّق من وجود العبارة داخلة بالدالة stristr

    مثال :
    كود PHP:
    if ( stristr$filename 'news') ) {
    كود الإستثناء و ليكن continue مثلا .

    لا أعتقد ملفات ال php ستكون مستثناة و ستحذف أيضاً

    وطبعاً هناك عدة طرق للوصول وكل شيخ و له طريقته
    نعم أخي ، و هذا مجلس علم و النقد فيه ليس عتاب

    اذا مررنا اسم الملف filename.php.zip على دالة explode و التقسيم بالنقط .
    سيكون الناتج :
    كود PHP:
    array('filename','php','zip'
    و بالتالي يتم إستثنام كل الملفات التي لاحقتها موجودة في المصفوفة ، يعني كل الملفات التي تحمل الإمتداد :
    كود PHP:
    *.filename
    *.php
    *.zip 







  9. #9
    عضو نشيط جدا
    تاريخ التسجيل
    Jan 2005
    المشاركات
    518


    تماما أخ خالد, لكن نحن لم ننتهي من الاستثناء بعد

    على سبيل المثال نريد أن نفحص الملف filename.php.zip

    كود PHP:
     $filename 'filename.php.zip';
     
    $arr explode('.',$filename); 

    /*
    المصفوفة $arr أصبحت على هذا الشكل التالي:
    array('filename','php','zip') 
    */

     
    $arr array_reverse($arr); 

    /*
    استخدمنا دالة عكس العناصر لتكون لاحقة الملف هي العنصر الأول 
     المصفوفة $arr أصبحت على هذا الشكل التالي:
     array('zip','php','filename') 
    وأصبحت لاحقة الملف هي $arr[0] أي zip

     الكود التالي يقارن بين لاحقة الملف المعطى 
    و اللواحق التي لا نريد حذفها باستخدام الدالة in_array
    */

     
    return (in_array($arr[0], $wanted)) ? true:false






    التعديل الأخير تم بواسطة ALaa462 ; 31-03-2011 الساعة 05:43 AM
    __________________
    اللهم أعز الاسلام و المسلمين

  10. #10


    ALaa462
    معذرة لم أنتبه لإختيارك للعنصر الأول
    ملاحظة : يمكنك جلب آخر عنصر بالمصفوفة عبر الدالة end

    كود PHP:
    $arr = array(1,2,3);
    echo 
    end($arr); // Print 3 







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


    بارك الله فيكما اخوي خالد وعلاء.

    الكود مرفق للتجريب لمن يهمه الامر.

    اذا كانت هناك او تصحيح يرجى التنبيه اليها.

    شكراً.





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





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

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

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