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

الموضوع: طلب كود اعادة تسمية الملفات من حروف كبيرة الى حروف صغيرة

  1. #1
    عضو جديد
    تاريخ التسجيل
    Jun 2008
    المشاركات
    6

    طلب كود اعادة تسمية الملفات من حروف كبيرة الى حروف صغيرة



    السلام عليكم

    قام صديق لي بتوفير هذا الكود

    كود PHP:
    <?php
    foreach (glob("*.*") as $filename) {
        
    rename("$filename",  strtolower($filename));
        echo 
    'Renamed file from '.$filename.' To '.strtolower($filename).'<br />';
    }
    foreach (
    glob("*/.*") as $filename) {
        
    rename("$filename",  strtolower($filename));
        echo 
    'Renamed file from '.$filename.' To '.strtolower($filename)."\n";'<br />';
    }
    ?>

    الكود يقوم بعمل اعادة تسمية للملفات وتغيير اسمها من حروف كبيرة الى حروف صغيرة وهو يعمل بكفائة

    المشكلة : الكود يعمل على مستوى المجلد الحالي فقط

    ماذا لو اردنا تطبيق هذا الكود على جميع المجلدات الفرعية والملفات الفرعية


    والشكر للجميع

    تحياتي







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


    يجب ان تستعمل الbacktracking

    تحتاج للدوال التالية:

    scandir
    is_file
    is_dir

    سؤال:

    لماذا تحتاج لمثل هذه الدالة؟ :con2:


    كود كنت قد كتبته مع بعض التعديلات
    كود PHP:
    <?php
    //root dir path

    $dir_name "test";
    //list sub folders
    function getSubDirs($dir_name){
    $new_dir_arr = Array();
    $index=0;
    foreach (
    scandir($dir_name) as $dirName){
    if (
    is_dir($dir_name."/".$dirName) && $dirName !="." && $dirName!=".." )
    $new_dir_arr[$index++]=$dir_name."/".$dirName;
    }
    return 
    $new_dir_arr;
    }
    //list sub files
    function getSubFiles($dir_name){
    $new_dir_arr = Array();
    $index=0;
    foreach (
    scandir($dir_name) as $fileName){
    if (
    is_file($dir_name."/".$fileName) && $fileName !="." && $fileName!=".." )
    $new_dir_arr[$index++]=$fileName;
    }
    return 
    $new_dir_arr;
    }
    //does filename lowercase if needed
    function doLowerCase($dir){

    if (
    $dir!=""){
    foreach(
    getSubFiles($dir)as $filename){

    $temp strtolower($filename);
    if (
    $filename!=$temp){
    rename($dir."/".$filename,$dir."/".$temp);
    echo 
    $filename." changed to ".$temp."<br>";
    }
    }

    }
    }
    //backtracking
    function lowerCase($current_path){

    if (
    count(getSubFiles($current_path))==0)
    return;
    else{

    doLowerCase($current_path);
    foreach(
    getSubDirs($current_path) as $dirname){

    lowerCase($dirname);
    }
    }
    }
    echo 
    "changed files:</br>";
    //call function
    lowerCase($dir_name);
    ?>






    التعديل الأخير تم بواسطة ahmad sadiq ; 11-12-2009 الساعة 10:58 PM

  3. #3
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    اتفضل اخي الكريم

    دية داله

    كود PHP:
    <?php
    /**  
      * ############################################## 
      * ##برمجة محمدهلال                             ## 
      * ##جميع الحقوق محفوظة لي محمدهلال             ## 
      * ##    mohamedhelal                            ## 
      * ##all rights to mohamedhelal                 ## 
      * ##email:mohamed_helal123456@hotmail.com        ## 
      * ############################################## 
      */ 
      
      
    function ReName_To_UP($dir,$cases=false)
      {
          if(
    is_dir($dir))
            {
                
    $dir=preg_replace("/[\/]+$/",'',$dir);
                
    $case=($cases==true)?'strtolower':'strtoupper';
                
    $dirs=scandir($dir);
                foreach(
    $dirs as $key=>$value)
                {
                    if(
    $value!="." and $value!=".." and is_file($dir."/".$value))
                        {
                            
    $filename=$dir."/".$value;
                             
    rename($filename,$case($filename));
                        }
                    elseif(
    $value!="." and $value!=".." and  is_dir($dir."/".$value))
                        {
                            
    ReName_To_UP($dir."/".$value,$cases);
                        }
                }
            }
        else
            return 
    false;
      }
      
      
    //طريقة الاستخدام
       
    ReName_To_UP("files");
      
    ?>
    الداله بتاخد اتنين براميتر

    الاول هو المجلد

    اما الثاني بياخد
    true= اسم الملف صغير
    false=اسم الملف كبير

    بتوفيق اخي الكريم

    اخوك محمدهلال





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

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


    دالة الاخ محمد هلال اقصر وافضل.

    لم يكن هناك حاجة لأن اخرج اسماء الملفات والمجلدات مرة اخرى طالما اني اتعامل معها في الدالة الرئيسية.

    تصحيح بسيط لدالة الاخ محمد هلال:

    تعريف المتغير يحب ان يكون cases =true في بارمترات الدالة

    في حالة انك تستخدم php 5

    يمكنك استخدام الكود التالي:
    كود PHP:
    <?php

    $dir_iterator 
    = new RecursiveDirectoryIterator("test");
    $iterator = new RecursiveIteratorIterator($dir_iteratorRecursiveIteratorIterator::SELF_FIRST);

    foreach (
    $iterator as $file) {
        if (
    is_file($file)){
        
    $dir_name dirname($file);
        
    $base_name strtolower(basename($file));
        
    rename($file,$dir_name."/".$base_name);
        }
    }

    ?>
    هناك كائن يعيد لنا كل الملفات والمجلدات الفرعية على شكل iterator
    أرى ان php5 تتجه نحو الاحترافية





    التعديل الأخير تم بواسطة ahmad sadiq ; 12-12-2009 الساعة 12:52 PM

  5. #5
    عضو جديد
    تاريخ التسجيل
    Jun 2008
    المشاركات
    6


    بارك الله فيكم اخواني الاعزاء

    واخص بالشكر اخي العزيز محمد هلال الذي تابع معي المشكلة حتى النهاية


    سؤال:

    لماذا تحتاج لمثل هذه الدالة؟ :con2:
    عندي مكتبة اسلامية وجميع مجلداتها وملفاتها بحروف كبيرة "كابيتل" وعند رفعها على النت الرابط لا يعمل بشكل صحيح

    للك احتجت اعادة تسمية الملفات الى حروف صغيرة

    والشكر للجميع

    تحياتي










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

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

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