PHP के साथ पूर्ण पथ से मुझे फ़ाइल नाम कैसे मिलेगा?


229

उदाहरण के लिए, मुझे कैसे मिलता है Output.map

से

F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map

PHP के साथ?

जवाबों:


451

तुम खोज रहे हो basename

PHP मैनुअल से उदाहरण:

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path);         // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>

29
बेसनैम () में एक बग होता है जब चीनी जैसे एशियाई पात्रों को संसाधित करता है।
सूर्य जुंवेन

1
धन्यवाद सूर्य, आपने अभी-अभी मुझे बग की हत्या के घंटों बचाया क्योंकि मेरे ऐप को विदेशों में उपयोग किया जाएगा।
साइलेंटसेल

11
मेरा सुझाव है कि pathinfoअधिक basenameके रूप में Metafaniel नीचे दर्ज किया। pathinfo()आपको पथ के भागों के साथ एक सरणी देगा। या यहाँ मामले के लिए, आप केवल फ़ाइल नाम के लिए विशेष रूप से पूछ सकते हैं। तो pathinfo('/var/www/html/index.php', PATHINFO_FILENAME)लौटना चाहिए 'index.php' पीएचपी Pathinfo प्रलेखन
OnethingSimple

7
@OnethingSimple डॉक्स को फिर से जांचें ... सहज ज्ञान युक्त काउंटर, हालांकि यह है, आप PATHINFO_BASENAMEपूर्ण प्राप्त करना चाहते हैं index.phpPATHINFO_FILENAMEआपको दे देंगे index
लेविग्रोकर

1
किसी भी स्थिति में, एक यूनिकोड संगत विधि के लिए, mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')- बस अपने फाइलसिस्टम (NTFS और
ExFAT

68

मैंने इसे फ़ंक्शन का उपयोग करके किया है PATHINFOजो आपके उपयोग के लिए पथ के कुछ हिस्सों के साथ एक सरणी बनाता है! उदाहरण के लिए, आप यह कर सकते हैं:

<?php
    $xmlFile = pathinfo('/usr/admin/config/test.xml');

    function filePathParts($arg1) {
        echo $arg1['dirname'], "\n";
        echo $arg1['basename'], "\n";
        echo $arg1['extension'], "\n";
        echo $arg1['filename'], "\n";
    }

    filePathParts($xmlFile);
?>

यह लौटेगा:

/usr/admin/config
test.xml
xml
test

इस फ़ंक्शन का उपयोग PHP 5.2.0 के बाद से उपलब्ध है!

फिर आप सभी भागों को आवश्यकतानुसार जोड़ सकते हैं। उदाहरण के लिए, पूर्ण पथ का उपयोग करने के लिए, आप यह कर सकते हैं:

$fullPath = $xmlFile['dirname'] . '/' . $xmlFile['basename'];

1
इससे मुझे अच्छा जवाब मिला।
विकी बाबू

12

basenameसमारोह आप देना चाहिए कि आप क्या चाहते:

किसी फ़ाइल में पथ वाले स्ट्रिंग को देखते हुए, यह फ़ंक्शन फ़ाइल का आधार नाम वापस कर देगा।

उदाहरण के लिए, मैनुअल के पृष्ठ को उद्धृत करना:

<?php
    $path = "/home/httpd/html/index.php";
    $file = basename($path);         // $file is set to "index.php"
    $file = basename($path, ".php"); // $file is set to "index"
?>

या, आपके मामले में:

$full = 'F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map';
var_dump(basename($full));

आपको मिलेगा:

string(10) "Output.map"

12

फ़ाइल नाम और एक्सटेंशन प्राप्त करने के कई तरीके हैं। आप निम्नलिखित का उपयोग कर सकते हैं जो उपयोग करना आसान है।

$url = 'http://www.nepaltraveldoor.com/images/trekking/nepal/annapurna-region/Annapurna-region-trekking.jpg';
$file = file_get_contents($url); // To get file
$name = basename($url); // To get file name
$ext = pathinfo($url, PATHINFO_EXTENSION); // To get extension
$name2 =pathinfo($url, PATHINFO_FILENAME); // File name without extension

@peter मोर्टेनसेन आपके समर्थन के लिए धन्यवाद
पुष्पेंद्र

10

SplFileInfo के साथ :

SplFileInfo SplFileInfo वर्ग एक व्यक्तिगत फ़ाइल के लिए जानकारी के लिए एक उच्च-स्तरीय ऑब्जेक्ट उन्मुख इंटरफ़ेस प्रदान करता है।

Ref : http://php.net/manual/en/splfileinfo.getfilename.php

$info = new SplFileInfo('/path/to/foo.txt');
var_dump($info->getFilename());

o / p: string (7) "foo.txt"


9

इसे इस्तेमाल करे:

echo basename($_SERVER["SCRIPT_FILENAME"], '.php') 

8

बेसनैम () में चीनी जैसे एशियाई पात्रों को संसाधित करते समय एक बग होता है।

मैं इसका उपयोग करता हूं:

function get_basename($filename)
{
    return preg_replace('/^.+[\\\\\\/]/', '', $filename);
}

मुझे नहीं लगता कि इसका उल्लेख , डॉक्स में इसका उल्लेख है Caution basename() is locale aware, so for it to see the correct basename with multibyte character paths, the matching locale must be set using the setlocale() function. :। लेकिन मैं भी preg_replace का उपयोग करने के लिए पूर्वनिर्धारित करता हूं, क्योंकि ऑपरेटिंग सिस्टम के बीच निर्देशिका विभाजक भिन्न होता है। उबंटू `\ _ पर एक अलग विभाजक नहीं है और बेसन का इस पर कोई प्रभाव नहीं पड़ेगा।
एडम


4

सबसे कम लाइनों में ऐसा करने के लिए, मैं पथ में भागों को अलग करने के लिए अंतर्निहित DIRECTORY_SEPARATORनिरंतर का उपयोग करने का सुझाव explode(delimiter, string)दूंगा और फिर बस प्रदान की गई सरणी में अंतिम तत्व को बंद कर दूंगा।

उदाहरण:

$path = 'F:\Program Files\SSH Communications Security\SSH SecureShell\Output.map'

//Get filename from path
$pathArr = explode(DIRECTORY_SEPARATOR, $path);
$filename = end($pathArr);

echo $filename;
>> 'Output.map'


1

URI से सटीक फ़ाइल नाम प्राप्त करने के लिए, मैं इस विधि का उपयोग करूंगा:

<?php
    $file1 =basename("http://localhost/eFEIS/agency_application_form.php?formid=1&task=edit") ;

    //basename($_SERVER['REQUEST_URI']); // Or use this to get the URI dynamically.

    echo $basename = substr($file1, 0, strpos($file1, '?'));
?>

0
<?php

  $windows = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";

  /* str_replace(find, replace, string, count) */
  $unix    = str_replace("\\", "/", $windows);

  print_r(pathinfo($unix, PATHINFO_BASENAME));

?> 

body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}
<iframe src="https://ideone.com/Rfxd0P"></iframe>


0

यह आसान है। उदाहरण के लिए:

<?php
    function filePath($filePath)
    {
        $fileParts = pathinfo($filePath);

        if (!isset($fileParts['filename']))
        {
            $fileParts['filename'] = substr($fileParts['basename'], 0, strrpos($fileParts['basename'], '.'));
        }
        return $fileParts;
    }

    $filePath = filePath('/www/htdocs/index.html');
    print_r($filePath);
?>

आउटपुट होगा:

Array
(
    [dirname] => /www/htdocs
    [basename] => index.html
    [extension] => html
    [filename] => index
)

0
$image_path = "F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map";
$arr = explode('\\',$image_path);
$name = end($arr);

कृपया वर्णन करें कि आपने क्या बदला और क्यों, दूसरों को समस्या की पहचान करने और इस उत्तर को समझने में मदद करने के लिए
FZs
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.