PHP में फ़ाइल एक्सटेंशन कैसे प्राप्त करें: 2025 के सर्वोत्तम अभ्यास
\n\nक्या आपने कभी ऐसी स्थिति का सामना किया है जहाँ आपको जल्दी से यह पता लगाना हो कि उपयोगकर्ता कौन सी फ़ाइल अपलोड कर रहा है — इमेज, दस्तावेज़ या आर्काइव? या हो सकता है, आप एक फ़ाइल पार्सर लिख रहे हों और आपको सैकड़ों एक्सटेंशन को डायनामिक रूप से प्रोसेस करना हो? प्रश्न "How can I get a file's extension in PHP?" कई वर्षों से Stack Overflow पर सबसे लोकप्रिय प्रश्नों में से एक रहा है, जिसे सैकड़ों हज़ारों बार देखा गया है। और यह कोई संयोग नहीं है।
\n\nऐसा लगता है, इससे आसान क्या हो सकता है? स्ट्रिंग लो, डॉट ढूंढो, बाकी काट दो। लेकिन PHP एक अलग स्वभाव वाली भाषा है। यह एक साथ कई बिल्ट-इन फ़ंक्शन प्रदान करती है, और सही का चुनाव संदर्भ पर निर्भर करता है। 2025 में, जब सुरक्षा और प्रदर्शन पहले से कहीं अधिक महत्वपूर्ण हैं, हम सभी प्रासंगिक तरीकों का विश्लेषण करेंगे और सर्वश्रेष्ठ की पहचान करेंगे।
\n\nइस लेख में आप जानेंगे:
\n- \n
- PHP में फ़ाइल एक्सटेंशन प्राप्त करने के पाँच कार्यशील तरीके। \n
- 95% मामलों में कौन सी विधि का उपयोग करना चाहिए। \n
- बिना एक्सटेंशन या कई डॉट वाली फ़ाइलों के जाल में कैसे न फँसें। \n
- कॉपी करने के लिए वास्तविक कोड उदाहरण। \n
विधि 1: क्लासिक — pathinfo()
\n\nयदि आप किसी अनुभवी PHP डेवलपर से पूछेंगे कि फ़ाइल एक्सटेंशन कैसे प्राप्त करें, तो वह बिना सोचे-समझे जवाब देगा: pathinfo()। यह सबसे लोकप्रिय और अनुशंसित तरीका है। यह फ़ंक्शन पथ के बारे में जानकारी के साथ एक ऐरे लौटाता है: डायरेक्टरी, फ़ाइल का नाम, एक्सटेंशन और पूरा नाम।
<?php\n$file = 'document.pdf';\n$extension = pathinfo($file, PATHINFO_EXTENSION);\necho $extension; // आउटपुट: pdf\n?>\n\n\nइस विधि की खूबसूरती इसकी सरलता और पठनीयता में है। आप फ़ाइल का नाम और कॉन्स्टेंट PATHINFO_EXTENSION पास करते हैं — और बिना किसी अतिरिक्त वर्ण के साफ परिणाम प्राप्त करते हैं। pathinfo() अधिकांश मानक मामलों को सही ढंग से संभालता है, जिसमें कई डॉट वाली फ़ाइलें शामिल हैं, जैसे archive.tar.gz — इस मामले में यह gz लौटाएगा, जो तार्किक है क्योंकि यह अंतिम एक्सटेंशन है।
लाभ: सहज रूप से समझ में आने वाला, बिल्ट-इन फ़ंक्शन, किसी भी जटिलता के पथ के साथ काम करता है।
\nनुकसान: यदि फ़ाइल में एक्सटेंशन नहीं है तो खाली स्ट्रिंग लौटा सकता है।
\n\nविधि 2: स्ट्रिंग के साथ काम करना — strrchr() + substr()
\n\nकभी-कभी लीगेसी कोड या शैक्षिक उदाहरणों में मैन्युअल पार्सिंग देखी जा सकती है। विचार सरल है: स्ट्रिंग में अंतिम डॉट ढूंढें और उसके बाद का सब कुछ लें।
\n\n<?php\n$file = 'image.jpg';\n$extension = substr(strrchr($file, '.'), 1);\necho $extension; // आउटपुट: jpg\n?>\n\n\nफ़ंक्शन strrchr() वर्ण का अंतिम उदाहरण ढूंढता है और उससे शुरू होने वाला सब कुछ लौटाता है (डॉट सहित)। substr() पैरामीटर 1 के साथ डॉट को हटा देता है। यह विश्वसनीय रूप से काम करता है, लेकिन कोड कम पठनीय हो जाता है।
दिलचस्प तथ्य: यह विधि C-जैसे फ़ंक्शन के युग की प्रत्यक्ष विरासत है। यह माइक्रो-बेंचमार्क में pathinfo() से तेज़ है, लेकिन वास्तविक परियोजनाओं में अंतर ध्यान देने योग्य नहीं है। इसका उपयोग करें यदि आप उच्च-लोड पार्सर लिख रहे हैं और हर माइक्रोसेकंड मायने रखता है।
विधि 3: तेज़ और गंदा — explode()
\n\nसबसे भोला तरीका जो शुरुआती लोगों के दिमाग में आता है: स्ट्रिंग को डॉट से विभाजित करें और ऐरे का अंतिम तत्व लें।
\n\n<?php\n$file = 'report.xlsx';\n$parts = explode('.', $file);\n$extension = end($parts);\necho $extension; // आउटपुट: xlsx\n?>\n\n\nसावधान: यह एक बुरा अभ्यास है। क्यों? फ़ाइल my.file.name.txt की कल्पना करें। explode() इसे 4 भागों में विभाजित करेगा, और end() txt लौटाएगा। यह सही लगता है। लेकिन क्या होगा यदि फ़ाइल का नाम .htaccess है? ऐरे ['', 'htaccess'] होगा, और एक्सटेंशन htaccess के रूप में लौटाया जाएगा, जबकि यह पूरी फ़ाइल का नाम है। या बिना एक्सटेंशन वाली फ़ाइल — नाम ही लौट आएगा।
यह विधि