আমি কীভাবে পিএইচপি-তে একটি ফাইল এক্সটেনশন পেতে পারি?


723

এটি এমন একটি প্রশ্ন যা আপনি ওয়েবে সর্বত্র বিভিন্ন উত্তর সহ পড়তে পারেন:

$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);

$exts = split("[/\\.]", $filename);
$n    = count($exts)-1;
$ext  = $exts[$n];

প্রভৃতি

তবে সর্বদা "সেরা উপায়" থাকে এবং এটি স্ট্যাক ওভারফ্লোতে হওয়া উচিত।


15
প্রশ্নোত্তরের উত্স: cowburn.info/2008/01/13/get-file-
এক্সটেনশন-

5
আরও একটি উপায় EXT পেতে হয়strrchr($filename, '.');
verybadbug

উত্তর:


1776

অন্যান্য স্ক্রিপ্টিং ভাষার লোকেরা সবসময় তাদের আরও ভাল বলে মনে করে কারণ এটি করার জন্য তাদের অন্তর্নির্মিত ফাংশন রয়েছে এবং পিএইচপি নয় (আমি এই মুহূর্তে পাইথনিস্টাসের দিকে নজর দিচ্ছি :-))।

আসলে, এর অস্তিত্ব আছে, তবে এটি খুব কম লোকই জানেন। দেখা pathinfo():

$ext = pathinfo($filename, PATHINFO_EXTENSION);

এটি দ্রুত এবং অন্তর্নির্মিত। pathinfo()আপনি যে ধ্রুবকটিতে পৌঁছেছেন তার উপর নির্ভর করে আপনাকে অন্যান্য তথ্য যেমন ক্যানোনিকাল পাথ দিতে পারে।

মনে রাখবেন যে আপনি যদি ASCII বিহীন অক্ষরগুলি মোকাবেলা করতে সক্ষম হতে চান তবে আপনাকে প্রথমে লোকেলটি সেট করতে হবে। উদাহরণ:

setlocale(LC_ALL,'en_US.UTF-8');

এছাড়াও নোট করুন এটি ফাইলের সামগ্রী বা মাইম-টাইপকে বিবেচনায় নেয় না, আপনি কেবল এক্সটেনশন পাবেন। তবে আপনি যা চেয়েছিলেন এটি

সর্বশেষে, নোট করুন যে এটি কেবল কোনও ফাইলের জন্য কাজ করে, কোনও URL সংস্থান পথ নয়, যা PARSE_URL ব্যবহার করে আচ্ছাদিত।

উপভোগ করুন


62
আমি আশা করি আমি এই দুইবার ভোট দিতে পারে। আমি আপনাকে বলতে পারি না আমি কত কোডটি প্যাথিনফো ব্যবহার করে প্রতিস্থাপন করতে পেরেছি
মার্ক বাইক

8
আমিও তাই করি That's এজন্যই আমি এখানে রেখেছি!
ই-সন্তুষ্ট

7
ভাদ্দায়া জানেন, সেরা উপায় আছে দেখা যাচ্ছে।
বেন

19
@ Khizaransari আপনার অন্য হোস্টিং সরবরাহকারীর সন্ধান করা উচিত, আপনি যে পেয়েছেন সে বোকা। সত্যি, আমি এটা বলতে চাই। নেই কোনো কারণ সবটা এই ফাংশন নিষ্ক্রিয় করতে। তাদের বলুন যে। কার্যকারণ হিসাবে: function get_ext($fname){ return substr($fname, strrpos($fname, ".") + 1); }ফাইলটির কোনও এক্সটেনশন রয়েছে তা নিশ্চিত করুন, আপনি যুক্তি হিসাবে কোনও পথ পাস করার পরে এটি কিছু করতে পারে!
লুক


166

pathinfo()

$path_info = pathinfo('/foo/bar/baz.bill');

echo $path_info['extension']; // "bill"

14
পিএইচপি 5.5 যেহেতু ->echo pathinfo('/foo/bar/baz.bill')['extension'];
সালমানের

1
এটি এমনকি এই স্তরে (টুইটার জসন) কাজ করে: $ ext = প্যাথিনফো ($ ফলাফল-> বর্ধিত_তত্ব-> মিডিয়া [0] -> ভিডিও_ইনফো-> রূপগুলি [1] -> url, PATHINFO_EXTENSION);
কেজেএস

100

উদাহরণ ইউআরএল: http://example.com/myfolder/sympony.mp3?a=1&b=2#XYZ

ক) প্রস্তাবিত অনিরাপদ ব্যবহার করবেন নাPATHINFO :

pathinfo($url)['dirname']   🡺 'http://example.com/myfolder'
pathinfo($url)['basename']  🡺 'sympony.mp3?a=1&b=2#XYZ'         // <------- BAD !!
pathinfo($url)['extension'] 🡺 'mp3?a=1&b=2#XYZ'                 // <------- BAD !!
pathinfo($url)['filename']  🡺 'sympony'

খ) PARSE_URL ব্যবহার করুন :

parse_url($url)['scheme']   🡺 'http'
parse_url($url)['host']     🡺 'example.com'
parse_url($url)['path']     🡺 '/myfolder/sympony.mp3'
parse_url($url)['query']    🡺 'aa=1&bb=2'
parse_url($url)['fragment'] 🡺 'XYZ'

বোনাস: সমস্ত নেটিভ পিএইচপি উদাহরণ দেখুন


3
এই উত্তরটি সমস্ত কিছুকে অন্তর্ভুক্ত করে। ন্যায় , foo_folder/foo-file.jpg?1345838509pathinfo

1
পুরোপুরি অন টপিক নয়, তবে এটি অবশ্যই আমার সমস্যার সমাধান করেছে!
হাওয়ে

7
কিছুই ভুলে যাবেন না! parse_urlURL এর জন্য এবং pathinfoফাইলের পথে path
নবী কেজি

1
"পথের তথ্য ভুলে যান" এর অর্থ কী? আপনি এটি সমাধান ব্যবহার!
শরত্কাল লিওনার্ড

1
@ অটমনিওনার্ড তিনি করেন না, তিনি কেবল প্যাথিনফো এবং পার্সে_রল এর মধ্যে পার্থক্য দেখিয়েছেন।

59

এছাড়াও আছে SplFileInfo:

$file = new SplFileInfo($path);
$ext  = $file->getExtension();

আপনি যদি স্ট্রিংয়ের পরিবর্তে এই জাতীয় কোনও বিষয় পাস করে থাকেন তবে প্রায়শই আপনি আরও ভাল কোড লিখতে পারেন। আপনার কোডটি তখন বেশি কথা বলছে। পিএইচপি 5.4 যেহেতু এটি এক-লাইনার:

$ext  = (new SplFileInfo($path))->getExtension();

চমত্কার, এর সমস্ত বিষয় নিচে
ক্রিস্টোফার চেজ

2
->getExtension()পিএইচপি 5.3.6 থেকে স্প্লিফিলইনফোতে উপলব্ধ যে দয়া করে সচেতন হন ।
ম্যাথিয়াস

1
@ মথিয়াস: দয়া করে সচেতন হন যে পিএইচপি 5.3.0 রিলিজের পূর্বাভাস দেয় এমন পিএইচপি সংস্করণগুলিতে এসপিএল অক্ষম করা যেতে পারে। আপনি যদি এখনও পিএইচপি 5.3 চালাচ্ছেন না তবে 5.2 বা তার চেয়ে কম, তবে সম্ভবত এই উত্তরটি স্থির কোডের জন্য উপযুক্ত নয়। অন্যথায় আপনি একটি নির্দিষ্ট পিএইচপি সংস্করণ প্রয়োজনের মাধ্যমে আপনার কোডটি স্থিতিশীল করতে পারেন এবং অন্যথায় জামিন ছাড়তে পারেন।
hakre

@hakre আপনি যখন এই কথাটি সঠিক বলেছেন "5.3.0 পূর্ববর্তী সংস্করণগুলিতে অক্ষম করা যেতে পারে", তবে এসপিএল এক্সটেনশন তবুও পিএইচপি 5.0.0 হিসাবে ডিফল্টরূপে সংকলিত হয়েছে। সুতরাং এই মন্তব্যটি প্রকৃতপক্ষে পিএইচপি 5.2 বা ততোধিক লোক ব্যবহার করতে বাধ্য হয়েছে এবং নির্দিষ্ট এসপিএল ক্লাস ব্যবহার করে পদত্যাগ করতে চায় না।
ম্যাথিয়াস

হ্যাঁ, সবেমাত্র মৃত সংস্করণ ফ্লাফ :)
হ্যাক্রে

23

ই-সন্তুষ্টের প্রতিক্রিয়া হ'ল ফাইল এক্সটেনশন নির্ধারণের সঠিক উপায়।

বিকল্পভাবে, কোনও ফাইল এক্সটেনশনের উপর নির্ভর করার পরিবর্তে, আপনি ফাইলগুলি মাইমে টাইপ নির্ধারণ করতে ফাইল ইনফো ব্যবহার করতে পারেন ।

এখানে কোনও ব্যবহারকারীর দ্বারা আপলোড করা একটি চিত্র প্রক্রিয়া করার একটি সরল উদাহরণ রয়েছে:

// Code assumes necessary extensions are installed and a successful file upload has already occurred

// Create a FileInfo object
$finfo = new FileInfo(null, '/path/to/magic/file');

// Determine the MIME type of the uploaded file
switch ($finfo->file($_FILES['image']['tmp_name'], FILEINFO_MIME)) {        
    case 'image/jpg':
        $im = imagecreatefromjpeg($_FILES['image']['tmp_name']);
    break;

    case 'image/png':
        $im = imagecreatefrompng($_FILES['image']['tmp_name']);
    break;

    case 'image/gif':
        $im = imagecreatefromgif($_FILES['image']['tmp_name']);
    break;
}

1
এটি কেবলমাত্র সঠিক উত্তর। আমি বুঝতে পারছি না কেন লোকেরা অন্যকে ভোট দিয়েছিল। হ্যাঁ, এই পদ্ধতির বিকাশকারীর কাছ থেকে আরও প্রচেষ্টার দাবি রয়েছে তবে এটি কর্মক্ষমতা বাড়ায় (যদিও সামান্য, তবে তা করে)। দয়া করে এটি উল্লেখ করুন
ভাভিক শাহ

2
@ ভাওয়িক: কিছু ক্ষেত্রে আমাদের কেবল ফাইল এক্সটেনশনের প্রয়োজন হতে পারে, তারা মাইম টাইপ চেক সম্পর্কে। তবে আসল প্রশ্নটি ফাইলের প্রসার সম্পর্কে, ফাইলের ধরণের নয়। সুতরাং এটি এই প্রশ্নের সেরা উত্তর নয়। (এখনও একটি উত্তর)
সসি বর্ণ কুমার


16

যতক্ষণ না এটিতে কোনও পথ না থাকে আপনি ব্যবহার করতে পারেন:

array_pop(explode('.', $fname))

কোথায় $fnameফাইল, উদাহরণস্বরূপ একটি নাম হল: my_picture.jpg। এবং ফলাফলটি হবে:jpg


@ কেন এই 3 টি ডাউনটি আছে? এটির যথাযথ ফলাফল দিচ্ছে। দয়া করে ব্যাখ্যা করুন
রেলবক্স 22'14

এটি ভুল নয়, এটি করার সর্বোত্তম উপায় নয়। কিছুটা ভারসাম্যের জন্য উত্সাহিত।

এটিই সর্বোত্তম উপায়, যখন আপনার আসল এক্সটেনশন প্রয়োজন হয় এবং ফাইলনামে একাধিক থাকতে পারে, যেমন ব্যবহারকারীরা আমার ক্ষেত্রে ফটো আপলোড করে।
রাউলি রাজান্ডে

2
ফাইলের নামের কোনও এক্সটেনশন না থাকলে এটি ব্যর্থ হয়। "মাইফিল" এ যাওয়ার চেষ্টা করুন এবং এটি "মাইফিল" ফিরে আসবে। সঠিক রিটার্ন মান হ'ল এই ব্যবহারের ক্ষেত্রে এক্সটেনশন হিসাবে একটি খালি স্ট্রিং।
বিকাল

এটি অ্যারে_পপতে ভুল () একটি বিজ্ঞপ্তি নিক্ষেপ করবে কারণ এটি প্যারামিটার হিসাবে পয়েন্টার হিসাবে নেয়।
jurchiks

12

1) আপনি যদি (পিএইচপি 5> = 5.3.6 ) ব্যবহার করে থাকেন তবে আপনি স্প্লফিলিআইএনফোও ব্যবহার করতে পারেন :: getExistance - ফাইলের এক্সটেনশন পান

উদাহরণ কোড

<?php

$info = new SplFileInfo('test.png');
var_dump($info->getExtension());

$info = new SplFileInfo('test.tar.gz');
var_dump($info->getExtension());

?>

এই আউটপুট হবে

string(3) "png"
string(2) "gz"

2) আপনি যদি ব্যবহার করছেন তবে এক্সটেনশন পাওয়ার অন্য উপায় (পিএইচপি 4> = 4.0.3, পিএইচপি 5) হ'ল প্যাথিনফো

উদাহরণ কোড

<?php

$ext = pathinfo('test.png', PATHINFO_EXTENSION);
var_dump($ext);

$ext = pathinfo('test.tar.gz', PATHINFO_EXTENSION);
var_dump($ext);

?>

এই আউটপুট হবে

string(3) "png"
string(2) "gz"

// সম্পাদনা: একটি বন্ধনী সরানো হয়েছে


12

কখনও কখনও এটি ব্যবহার না করার জন্য দরকারী pathinfo($path, PATHINFO_EXTENSION)। উদাহরণ স্বরূপ:

$path = '/path/to/file.tar.gz';

echo ltrim(strstr($path, '.'), '.'); // tar.gz
echo pathinfo($path, PATHINFO_EXTENSION); // gz

এছাড়াও খেয়াল করুন যে pathinfoকিছু অ-এসসিআইআই অক্ষর হ্যান্ডেল করতে ব্যর্থ হয়েছে (সাধারণত এটি কেবল আউটপুট থেকে তাদের দমন করে)। এক্সটেনশানগুলিতে যা সাধারণত কোনও সমস্যা হয় না, তবে সেই সতর্কতা সম্পর্কে সচেতন হতে কোনও ক্ষতি হয় না।


6
@ ই-সন্তুষ্ট: উইকিপিডিয়া অনুসারে এগুলি দুটি এক্সটেনশন: ইউএনআইএক্স-এর মতো ফাইল সিস্টেমগুলি আলাদা আলাদা এক্সটেনশন মেটাডেটা ছাড়াই একটি ভিন্ন মডেল ব্যবহার করে। ডট অক্ষর মূল ফাইলনামের অন্য একটি চরিত্র এবং ফাইলের নামগুলিতে একাধিক এক্সটেনশান থাকতে পারে, সাধারণত নেস্টেড ট্রান্সফর্মেশনগুলি যেমন ফাইল.টর.gz উপস্থাপন করে
অ্যালিক্স অ্যাক্সেল

1
এবং যদি আমরা পণ্যের নাম বিন্দু আছে? প্রাক্তন:test.19-02-2014.jpeg
মারিও রডোমানানা

এটি /root/my.folder/my.css এর সাথে ব্যর্থ হবে প্যাথিনফোর ltrim(strrchr($PATH, '.'),'.')মতো কাজ করে তবে সমস্ত কিছু টোকনাইজড না করে।
রায় ফস

8

সহজ উপায় পিএইচপি ফাইল এক্সটেনশন পেতে পিএইচপি এর বিল্ট-ইন ফাংশন ব্যবহার করা হয় pathinfo

$file_ext = pathinfo('your_file_name_here', PATHINFO_EXTENSION);
echo ($file_ext); // The output should be the extension of the file e.g., png, gif, or html

8

আপনি এটিও চেষ্টা করে দেখতে পারেন (এটি পিএইচপি ৫. * এবং on এ কাজ করে):

$info = new SplFileInfo('test.zip');
echo $info->getExtension(); // ----- Output -----> zip

টিপ: যদি ফাইলটির কোনও এক্সটেনশন না থাকে তবে এটি একটি খালি স্ট্রিং দেয়


7

দুঃখিত ... "সংক্ষিপ্ত প্রশ্ন; তবে সংক্ষিপ্ত উত্তর নয়"

পাঠের জন্য উদাহরণ 1

$path = "/home/ali/public_html/wp-content/themes/chicken/css/base.min.css";
$name = pathinfo($path, PATHINFO_FILENAME);
$ext  = pathinfo($path, PATHINFO_EXTENSION);
printf('<hr> Name: %s <br> Extension: %s', $name, $ext);

ইউআরএল জন্য উদাহরণ 2

$url = "//www.example.com/dir/file.bak.php?Something+is+wrong=hello";
$url = parse_url($url);
$name = pathinfo($url['path'], PATHINFO_FILENAME);
$ext  = pathinfo($url['path'], PATHINFO_EXTENSION);
printf('<hr> Name: %s <br> Extension: %s', $name, $ext);

উদাহরণ 1 এর আউটপুট:

Name: base.min
Extension: css

উদাহরণ 2 এর আউটপুট:

Name: file.bak
Extension: php

তথ্যসূত্র

  1. https://www.php.net/manual/en/function.pathinfo.php

  2. https://www.php.net/manual/en/function.realpath.php

  3. https://www.php.net/manual/en/function.parse-url.php


6

একটি দ্রুত ফিক্স কিছু হবে।

// Exploding the file based on the . operator
$file_ext = explode('.', $filename);

// Count taken (if more than one . exist; files like abc.fff.2013.pdf
$file_ext_count = count($file_ext);

// Minus 1 to make the offset correct
$cnt = $file_ext_count - 1;

// The variable will have a value pdf as per the sample file name mentioned above.
$file_extension = $file_ext[$cnt];

দীর্ঘ কোড ব্যবহারের পরিবর্তে php.net/manual/en/function.pathinfo.php উদ্দেশ্যে কেবল পিএইচপি ব্যবহার করা হবে না কেন
শাহবাজ

1
শাহবাজের বক্তব্য ছাড়াও $file_ext = end(explode('.', $filename));আপনি এই উত্তরে চারটির পরিবর্তে একটি লাইনে সব কিছু করতে পারেন।
tvanc

@ আমেলিয়া যদি আপনার কাছে থাকে তবে কি হবে .tar.gz? এটি কাজ করবে না, সুতরাং আপনার যদি এক্সটেনশন ব্যবহারের ltrim(strstr($filename, '.'), '.');পূর্ণরূপে প্রয়োজন তবে এর পরিবর্তে অনর্থকভাবে এক্সটেনশনের পূর্ণতা পেতে gz
মেরিন সাগোভ্যাক

6

এখানে একটি উদাহরণ। ধরুন $ ফাইলের নাম "উদাহরণ.txt",

$ext = substr($filename, strrpos($filename, '.', -1), strlen($filename));

সুতরাং $ ext হবে ".txt"।


6

প্যাথিনফো একটি অ্যারে। আমরা ডিরেক্টরি নাম, ফাইলের নাম, এক্সটেনশন , ইত্যাদি পরীক্ষা করতে পারি . :

$path_parts = pathinfo('test.png');

echo $path_parts['extension'], "\n";
echo $path_parts['dirname'], "\n";
echo $path_parts['basename'], "\n";
echo $path_parts['filename'], "\n";

5
substr($path, strrpos($path, '.') + 1);

1
এটি /root/my.folder/my.css- এর সাথে ব্যর্থ হবে
রায় ফস

1
এটি অবশ্যই সঠিকভাবে কাজ করবে: সাবস্ট্রাস্ট ($ পথ, স্ট্রপপস ($ পথ, '।') + 1); দ্রষ্টব্য: এই পদ্ধতিটি উপরের অন্যান্য সমাধানগুলির চেয়ে দ্রুত। আমাদের নিজস্ব স্ক্রিপ্ট ব্যবহার করে একটি মানদণ্ড চেষ্টা করুন।
আব্বাস

4

আপনি এটি ব্যবহার করে দেখতে পারেন:

 pathinfo(basename($_FILES["fileToUpload"]["name"]), PATHINFO_EXTENSION)

4
ltrim(strstr($file_url, '.'), '.')

যদি আপনার নাম.নাম.নাম.ইেক্সট (কুৎসিত, তবে এটি কখনও কখনও ঘটে থাকে) এর মতো ফাইল নাম থাকে তবে এটি সর্বোত্তম উপায়



3

আমি দেখতে পেয়েছি যে স্থানীয় ফাইল সিস্টেমে স্ট্যান্ডার্ড ফাইলগুলির জন্য pathinfo()এবং SplFileInfoসমাধানগুলি ভালভাবে কাজ করে তবে আপনি যদি দূরবর্তী ফাইলগুলির সাথে বৈধ চিত্রগুলির জন্য ইউআরএলগুলির একটি #(টুকরা শনাক্তকারী) এবং / অথবা ?(ক্যোয়ারী প্যারামিটার) থাকতে পারে তবে আপনি সমস্যার মধ্যে পড়তে পারেন you ইউআরএল শেষে, যা উভয় সমাধান (ভুল) ফাইল এক্সটেনশনের অংশ হিসাবে বিবেচনা করবে।

আমি দেখতে পেলাম pathinfo()যে ফাইলের এক্সটেনশনের পরে অপ্রয়োজনীয় বিশৃঙ্খলা ছড়িয়ে দেওয়ার জন্য প্রথমে পার্স করার পরে কোনও ইউআরএল ব্যবহারের এটি একটি নির্ভরযোগ্য উপায় ছিল :

$url_components = parse_url($url); // First parse the URL
$url_path = $url_components['path']; // Then get the path component
$ext = pathinfo($url_path, PATHINFO_EXTENSION); // Then use pathinfo()

3

ব্যবহার substr($path, strrpos($path,'.')+1);। এটি সমস্ত তুলনার দ্রুততম পদ্ধতি।

@ কর্ট ঝং ইতিমধ্যে জবাব দিয়েছে।

আসুন এখানে তুলনামূলক ফলাফলটি যাচাই করুন: https://eval.in/661574


2

আপনি একটি নির্দিষ্ট ফোল্ডারে সমস্ত ফাইল এক্সটেনশন পেতে এবং একটি নির্দিষ্ট ফাইল এক্সটেনশান দিয়ে ক্রিয়াকলাপ করতে পারেন:

<?php
    $files = glob("abc/*.*"); // abc is the folder all files inside folder
    //print_r($files);
    //echo count($files);
    for($i=0; $i<count($files); $i++):
         $extension = pathinfo($files[$i], PATHINFO_EXTENSION);
         $ext[] = $extension;
         // Do operation for particular extension type
         if($extension=='html'){
             // Do operation
         }
    endfor;
    print_r($ext);
?>

2

এটি দ্রুত করুন।

নিম্ন স্তরের কলগুলি খুব দ্রুত হওয়া দরকার তাই আমি ভেবেছিলাম এটি কিছু গবেষণার জন্য মূল্যবান। আমি কয়েকটি পদ্ধতি চেষ্টা করেছি (বিভিন্ন স্ট্রিং দৈর্ঘ্য, এক্সটেনশন দৈর্ঘ্য, একাধিক রান সহ), এখানে কিছু যুক্তিসঙ্গত বিষয় রয়েছে:

function method1($s) {return preg_replace("/.*\./","",$s);} // edge case problem
function method2($s) {preg_match("/\.([^\.]+)$/",$s,$a);return $a[1];}
function method3($s) {$n = strrpos($s,"."); if($n===false) return "";return substr($s,$n+1);}
function method4($s) {$a = explode(".",$s);$n = count($a); if($n==1) return "";return $a[$n-1];}
function method5($s) {return pathinfo($s, PATHINFO_EXTENSION);}

ফলাফল খুব অবাক করা হয়নি। দরিদ্রতম pathinfo(খুব দূরে!) ধীরে ধীরে (দেখে মনে হচ্ছে তিনি পুরো জিনিসটি বিশ্লেষণ করার চেষ্টা করছেন এবং তারপরে সমস্ত অপ্রয়োজনীয় অংশগুলি ফেলে দিতে পারেন) - এবং method3()(স্ট্রাইপপস) খুব দ্রুততম:

Original filename was: something.that.contains.dots.txt
Running 50 passes with 10000 iterations each
Minimum of measured times per pass:

    Method 1:   312.6 mike  (response: txt) // preg_replace
    Method 2:   472.9 mike  (response: txt) // preg_match
    Method 3:   167.8 mike  (response: txt) // strrpos
    Method 4:   340.3 mike  (response: txt) // explode
    Method 5:  2311.1 mike  (response: txt) // pathinfo  <--------- poor fella

দ্রষ্টব্য: প্রথম পদ্ধতির একটি পার্শ্ব প্রতিক্রিয়া রয়েছে: কোনও এক্সটেনশন না থাকলে এটি পুরো নামটি দেয়। অবশ্যই এই আচরণটি এড়ানোর জন্য এটি অতিরিক্ত স্ট্রপো দিয়ে এটি পরিমাপ করার কোনও ধারণা নেই।

উপসংহার

এটি সমুরাইয়ের মতো দেখাচ্ছে:

function fileExtension($s) {
    $n = strrpos($s,".");
    return ($n===false) ? "" : substr($s,$n+1);
}

1

আপনি যদি গতি খুঁজছেন (যেমন রাউটারে), আপনি সম্ভবত সবকিছু টোকানাইজ করতে চান না। অন্য অনেক উত্তর সঙ্গে ব্যর্থ হবে/root/my.folder/my.css

ltrim(strrchr($PATH, '.'),'.');

1

যদিও "সেরা উপায়" বিতর্কযোগ্য তবে আমি বিশ্বাস করি যে এটি কয়েকটি কারণের জন্য সেরা উপায়:

function getExt($path)
{
    $basename = basename($path);
    return substr($basename, strlen(explode('.', $basename)[0]) + 1);
}
  1. এটি এক্সটেনশনে একাধিক অংশের সাথে কাজ করে, যেমন tar.gz
  2. সংক্ষিপ্ত এবং দক্ষ কোড
  3. এটি ফাইলের নাম এবং একটি সম্পূর্ণ পাথ উভয়ই নিয়ে কাজ করে

1

আইএমও, আপনার যদি নাম.নাম.নাম.সেক্সট (কুরুচিযুক্ত তবে এটি কখনও কখনও ঘটে থাকে) এর মতো ফাইল নাম থাকলে এটি সর্বোত্তম উপায়:

$ext     = explode('.', $filename); // Explode the string
$ext_len = count($ext) - 1; // Count the array -1 (because count() starts from 1)
$my_ext  = $ext[$ext_len]; // Get the last entry of the array

echo $my_ext;

1

$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $fileName);

প্রাক নিয়মিত স্থানের জন্য আমরা নিয়মিত অভিব্যক্তি অনুসন্ধান এবং প্রতিস্থাপন ব্যবহার করি। প্রিগ_রেপস ফাংশনে প্রথম প্যারামিটারটি অনুসন্ধানের প্যাটার্ন, দ্বিতীয় প্যারামিটার 1 হল প্রথম (। *) এর সাথে যা মিলছে তার একটি রেফারেন্স এবং তৃতীয় প্যারামিটার ফাইলের নাম।

অন্য কোনও উপায়ে, আমরা একটি 'এর শেষ ঘটনার অবস্থানটি অনুসন্ধান করতে স্ট্রপপসও ব্যবহার করতে পারি।' কোনও ফাইলের নাম এবং সেই অবস্থানটি 1 দ্বারা বৃদ্ধি করে যাতে এটি স্ট্রিংটি বিস্ফোরিত হয় (।)

$ext = substr($fileName, strrpos($fileName, '.') + 1);


0

আসলে, আমি এটি খুঁজছিলাম।

<?php

$url = 'http://example.com/myfolder/sympony.mp3?a=1&b=2#XYZ';
$tmp = @parse_url($url)['path'];
$ext = pathinfo($tmp, PATHINFO_EXTENSION);

var_dump($ext);

-1

ব্যবহার

str_replace('.', '', strrchr($file_name, '.'))

দ্রুত এক্সটেনশন পুনরুদ্ধারের জন্য (যদি আপনি নিশ্চিত হন যে আপনার ফাইলের একটি রয়েছে)।

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