تمام سوالات سوالات بدون پاسخ سوال بپرسید

سلام کد زیر و چطوری تغییر بدم که لیست دایرکتوری ها رو بدون زیر دایرکتوری بهم بده؟ متشکر

function dirList ($directory) {

    $dir = opendir($directory);
    while ($file = readdir($dir )) {
        echo "<div><a href='?targ=" . $directory . DIRECTORY_SEPARATOR . "$file'>$file</a></div>";
    }
    closedir($dir);
    return $results;
}
1 پاسخ

سلام
دوست عزیز این تابع عملا به شما زیر دایرکتوری برنمیگردونه و فقط دایرکتوریهای سطح اول در دایرکتوری ارسال شده به تابع رو برمیگردونه.
درضمن اون return $results هم که نوشتید، بود یا نبودش فرقی نداره در این تابع.
برای بدست آوردن لیست دایرکتوریهایی که در سطح اول دایرکتوری مورد نظر وجود دارند میتونید به صورت ریز عمل کنید:

foreach(glob('*', GLOB_ONLYDIR) as $dir) {
  echo $dir;
}

توجه داشته باشید که علامت * به معنی تمام دایرکتوری ها میباشد و اگر دایرکتوری شما home/. میباشد، شما باید آنرا به این صورت بنویسید: */home/.

بله حواسم به return نبود، تابع بالا یک حلقه به تعداد تکرار کل فایل های(نه زیرفایل ها) موجود در مسیر ایجاد میکنه و عملا آدرس فولدر ها رو در نمیاره و فقط آدرس فایل های مسیر رو درمیاره. آیا تابعی برای این کار سراغ دارید؟

(17 مارس '13, 22:09) designme

حالا اگر بخوایم فقط اسم دایرکتوری رو برگردونه(نه با مسیرش) باید دستی مسیر اولش رو حذف کنیم؟(آخه لوکال و ریموت فرق میکنه و مقدار لازم برای حذف متغیر میشه)

(18 مارس '13, 09:59) designme
1

میتونی از Regular Expression استفاده کنی و عبارت بعد از آخرین slash رو به عنوان نام دایرکتوری بگیری و یا مسیر دایرکتوری ریشه که به تابع میدی رو از نتیجه با preg_replace حذف کنی. اینجوری داینامیک بودن تابع هم حفظ میشه.

(18 مارس '13, 11:07) omid

از ltrim استفاده کردم ولی چون اسلش لوکال با اسلش ریموت نمیخونه، وقتی کاراکتر آخر قبل از اسلش مسیر لازم برای حذف با کاراکتر اول فولدر برابره؛ یک کاراکتر از ابتدای اسم فولدر کم میکنه ;)

(18 مارس '13, 12:15) designme
1

منظور شما از اینکه اسلش لوکال با سرور یکی نیست چیه؟ بهتره از str_replace استفاده کنید،فکر نمیکنم نیاز به چیزه دیگه ای داشته باشید. str_replace('./home/hamcodi/' ,NULL ,'./home/hamcodi/dir'); و نتیجه میشه dir

(18 مارس '13, 12:26) omid

اسلش یکیش / هست و اون یکی برعکسش. روی لوکال یک قسمت از آدرس سپریتورش leftslash هست و یک قسمت دیگه با rightslash سپریت میشه. str_replace جواب داد، ممنونتون

(18 مارس '13, 12:43) designme

دوست عزیز leftslash و rightslash نداریم. slash و backslash تلفظ میشه.شما در لوکال دارید از ویندوز استفاده میکنید و در سرور از لینوکس. برای برطرف شدن این مشکل میتونید از ثابت(DIRECTORY_SEPARATOR) برای داینامیک کردن این موضوع استفاده کنید. 'home'. DIRECTORY_SEPARATOR .'omid'. DIRECTORY_SEPARATOR .'dir'

(18 مارس '13, 13:02) omid

بله ولی این دوتا لفظ جدیدن;) (بعدها به گوشتون میخوره) برای DIRECTORY_SEPARATOR هم باید دونه به دونه میون دایرکتوری ها استفاده کرد که خوب پویایی رو کلا از بین میبره مگر اینکه یه حلقه بنویسیم که خودش جایگزین کنه که اون هم تابع زمانی str_replace بهتره و بهینه تر درمیاد. در کل متشکر از راهنماییتون

(18 مارس '13, 14:51) designme
نمایش 5 از 8 نمایش همه
toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×125
  • پرسیده شده: 17 مارس '13, 21:24
  • بازدید: 2,088 بار
  • آخرین بروزرسانی: 18 مارس '13, 14:53

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها