PHP รับชื่อไดเร็กทอรีปัจจุบัน


124

ฉันมีหน้า php อยู่ในโฟลเดอร์บนเว็บไซต์ของฉัน

ฉันต้องการเพิ่มชื่อของไดเร็กทอรีปัจจุบันลงในตัวแปรเช่น:

$myVar = current_directory_name;

เป็นไปได้หรือไม่

คำตอบ:


247
getcwd();

หรือ

dirname(__FILE__);

หรือ (PHP5)

basename(__DIR__) 

http://php.net/manual/en/function.getcwd.php

http://php.net/manual/en/function.dirname.php

คุณสามารถใช้basename()เพื่อรับส่วนต่อท้ายของเส้นทาง :)

ในกรณีของคุณผมว่าคุณมักจะมองหาที่จะใช้getcwd(), dirname(__FILE__)เป็นประโยชน์มากขึ้นเมื่อคุณมีแฟ้มที่ความต้องการที่จะรวมถึงห้องสมุดอื่นและรวมอยู่ในห้องสมุดอื่น

เช่น:

main.php
libs/common.php
libs/images/editor.php

ในของcommon.phpคุณคุณจำเป็นต้องใช้ฟังก์ชันในeditor.phpดังนั้นคุณจึงใช้

common.php:

require_once dirname(__FILE__) . '/images/editor.php';

main.php:

require_once libs/common.php

วิธีที่ว่าเมื่อ common.php คือrequire'dในmain.phpสายของrequire_onceในcommon.phpจะถูกต้องรวมถึงeditor.phpในimages/editor.phpแทนที่จะพยายามมองในไดเรกทอรีปัจจุบันที่main.phpมีการเรียก


5
และbasename(__DIR__)ใน PHP 5
Xeoncross

นี่ทำให้ฉันมีเส้นทางทั้งหมด มีวิธีรับชื่อไดเร็กทอรีหรือไม่?
Satch3000

13
@ Satch3000basename(getcwd())
Andreas Wong

2
โปรดทราบว่าหากคุณใช้การรวมหรือที่จำเป็น__DIR__คือพา ธ ของไฟล์ที่รวมไม่ใช่ไดเร็กทอรีปัจจุบัน
Sebastien Horin

ใช้basename(__DIR__) บันทึกวันสำหรับฉัน ขอบคุณมากสำหรับการแบ่งปัน!
Devner

19

หากต้องการรับเฉพาะชื่อของไดเร็กทอรีที่สคริปต์เรียกใช้:

//Path to script: /data/html/cars/index.php
echo basename(dirname(__FILE__)); //"cars"


11

ตัวอย่างเช่น

Your Path = /home/serverID_name/www/your_route_Dir/

THIS_is_the_DIR_I_Want

Soultion ที่ใช้ได้ผล:

$url = dirname(\__FILE__);
$array = explode('\\\',$url);
$count = count($array);
echo $array[$count-1];

3
ดูเหมือนว่า OP จะยอมรับคำตอบสำหรับปัญหาของพวกเขาแล้ว แม้ว่าคุณจะเพิ่มมูลค่าอย่างชัดเจน แต่คุณจำเป็นต้องระบายความโกรธของคุณที่นี่หรือไม่?
Dutts

stackoverflow.com/help/formattingจะอธิบายวิธีทำให้สิ่งต่างๆเป็นตัวหนาโดยหลีกเลี่ยงการใช้ตัวพิมพ์ใหญ่ซึ่งคุณได้ชี้ให้เห็นอย่างถูกต้องหมายถึงการตะโกนบนอินเทอร์เน็ต
Dutts

7

จริงๆแล้วฉันพบทางออกที่ดีที่สุดดังต่อไปนี้:

$cur_dir = explode('\\', getcwd());
echo $cur_dir[count($cur_dir)-1];

ถ้า dir ของคุณคือ www \ var \ path \ Current_Path

จากนั้นจะส่งคืนCurrent_path


4
ระวังในเซิร์ฟเวอร์ Linux เราไม่ใช้แบ็กสแลช แต่ใช้เครื่องหมายทับ PHP มีค่าคงที่วิเศษที่จะทำให้ข้ามแพลตฟอร์มได้โปรดดูPATH_SEPARATOR
renoirb

2

$myVar = str_replace('/', '', $_SERVER[REQUEST_URI]);

libs / images /index.php
ผลลัพธ์: images


ฉันคิดว่าเราทุกคนยอมรับว่า Stack Overflow มีผู้ใช้ที่อวดรู้มากที่สุดในเน็ต นั่นเป็นประเด็น การพยายามหาวิธีแก้ปัญหาซึ่งจะยังคงใช้งานได้ใน 20 ปีในสถานที่แปลก ๆ นั้นเป็นเรื่องยุ่งยาก หากพวกเราบางคนถูกทำให้เสียหายนั่นก็ไปกับดินแดน :) ปล. ฉันไม่ใช่ผู้มีสิทธิเลือกตั้ง
Adam Chalcraft

1

หากคุณมี PATH และไม่ต้องการสร้างความกังวลหากสคริปต์ของคุณทำงานในโฟลเดอร์ที่คุณสนใจสิ่งนี้จะได้ผล:

basename(parse_url($_GET['dir_link'])['path'],PHP_URL_PATH)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.