আমি কীভাবে পিএইচপি দিয়ে পুরো পথ থেকে একটি ফাইলের নাম পাই?


229

উদাহরণস্বরূপ, আমি কীভাবে পাই Output.map

থেকে

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

পিএইচপি দিয়ে?

উত্তর:


451

আপনি খুঁজছেন 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"
?>

29
চিনির মতো এশিয়ান অক্ষরগুলি প্রক্রিয়া করার সময় বেসনাম () এর একটি বাগ থাকে।
রবি জুনওয়েন

1
ধন্যবাদ সান, আমার অ্যাপটি বিদেশে ব্যবহার করা হওয়ায় আপনি আমাকে কয়েক ঘন্টা বাগ কিলিং বাঁচিয়েছেন।
সাইলেন্টস্টিল

11
আমি সুপারিশ করবে pathinfoওভার basenameযেমন Metafaniel নিচে পোস্ট করা হয়েছে। pathinfo()আপনাকে পথের অংশগুলি সহ একটি অ্যারে দেবে। বা এখানে মামলার জন্য, আপনি কেবলমাত্র বিশেষভাবে ফাইলের নাম জিজ্ঞাসা করতে পারেন। সুতরাং পিএইচপি প্যাথিনফো ডকুমেন্টেশনpathinfo('/var/www/html/index.php', PATHINFO_FILENAME)'index.php'
অনেথিংসিম্পল

7
@ ওথিংসিংসিম্পল ডক্সগুলি আবার পরীক্ষা করুন ... স্বতঃস্ফূর্তভাবে পাল্টা হলেও আপনি পুরোটি PATHINFO_BASENAMEপেতে চাইবেন index.phpPATHINFO_FILENAMEদিতে হবে index
লেভিগ্রোকার

1
mb_substr($filepath,mb_strrpos($filepath,'/',0,'UTF-16LE'),NULL,'UTF-16LE')যাই হোক না কেন , ইউনিকোড সামঞ্জস্যপূর্ণ পদ্ধতির জন্য - আপনার ফাইল সিস্টেমটি যে জাতীয় অক্ষর ব্যবহার করে (এনটিএফএস এবং এক্সএফএটি ইউটিএফ 16 ব্যবহার করে) কেবল ইউটিএফ -১LE এলই প্রতিস্থাপন করুন
হ্যানশেরিক

67

আমি এটি ব্যবহার করে ফাংশনটি ব্যবহার করেছি 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

এই ফাংশনটির ব্যবহার পিএইচপি 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

@ পিটার মর্টেনসেন আপনার সমর্থনের জন্য ধন্যবাদ
খডকা পুষ্পেন্দ্র

10

সঙ্গে SplFileInfo :

SplFileInfo SplFileInfo শ্রেণি একটি পৃথক ফাইলের তথ্যের জন্য উচ্চ-স্তরের অবজেক্ট ওরিয়েন্টেড ইন্টারফেস সরবরাহ করে।

তথ্যসূত্র : http://php.net/manual/en/splfileinfo.getfilename.php

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

o / p: স্ট্রিং (7) "foo.txt"



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. । তবে আমি প্রিগ_রেপ্লেস ব্যবহার করতেও পছন্দ করি কারণ অপারেটিং সিস্টেমের মধ্যে ডিরেক্টরি বিভাজক পৃথক। উবুন্টুতে `\` কোনও ডাইরেক্টয় বিভাজক নয় এবং বেসনামের এটিতে কোনও প্রভাব থাকবে না।
আদম


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

ইউআরআই থেকে সঠিক ফাইলের নাম পেতে, আমি এই পদ্ধতিটি ব্যবহার করব:

<?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);

আপনি কী পরিবর্তন করেছেন এবং কেন, অন্যকে সমস্যা সনাক্ত করতে এবং এই উত্তরটি বুঝতে সাহায্য করার জন্য দয়া করে বর্ণনা করুন
এফজেডস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.