क्या PHP में कोई मानक फ़ंक्शन संबंधित फ़ाइल पथ से केवल एक छवि का विस्तार खोजने के लिए है?PHP में पथ से किसी छवि का विस्तार कैसे ढूंढें?
उदाहरण के लिए एफएफ मेरा छवि पथ '/testdir/dir2/image.gif' जैसा है तो फ़ंक्शन को 'gif' वापस करना चाहिए।
धन्यवाद
क्या PHP में कोई मानक फ़ंक्शन संबंधित फ़ाइल पथ से केवल एक छवि का विस्तार खोजने के लिए है?PHP में पथ से किसी छवि का विस्तार कैसे ढूंढें?
उदाहरण के लिए एफएफ मेरा छवि पथ '/testdir/dir2/image.gif' जैसा है तो फ़ंक्शन को 'gif' वापस करना चाहिए।
धन्यवाद
$ext = pathinfo('/testdir/dir2/image.gif', PATHINFO_EXTENSION); //$ext will be gif
अद्यतन: मैं downvotes का एक बहुत देखते हैं। मेरे दृष्टिकोण में क्या समस्या है? कृपया मुझे बताओ।
बेसिक स्ट्रिंग फ़ंक्शंस, strrpos()
और substr()
आपके लिए ऐसा कर सकते हैं। साथ ही कई अन्य फैंसी तरीके।
यह एक प्रश्न का सीधा जवाब है जहां ओपी शायद जो चाहता है वह पूरी तरह से फ़ाइल प्रकार की जांच है और विस्तार के लिए केवल एक नहीं है। आपके तर्क से, यह एक -1 के लायक होगा। बस कहें '; –
@ पेक्का "केवल एक छवि का विस्तार ढूंढने के लिए"। मुझे – Robus
@Robus हाँ के बजाय अस्पष्ट लगता है। मैं सिर्फ @Col चिढ़ा रहा हूं क्योंकि उसने मुझे स्पष्ट अनुरोधों के सीधे जवाब के लिए नीचे गिरा दिया है जब स्पष्ट अनुरोध वास्तव में नहीं था, ओपी वास्तव में सबसे अच्छा समाधान प्राप्त करने के लिए क्या आवश्यक था। उनकी प्रतिक्रिया हमेशा उचित थी (मैं @ कर्नल के ज्ञान और इनपुट को बहुत महत्व देता हूं, PHP टैग को इसकी आवश्यकता होती है) लेकिन वह हमेशा इसके बारे में बहुत सी प्रत्यक्ष है इसलिए मैं एक ही गलती करता हूं जब मैं बदले में डिक हूं :) यह इंगित करना चाहते हैं कि इस उत्तर को प्राप्त करने के लिए मेरे द्वारा प्राप्त नहीं किया गया है, हालांकि। –
कर्नल श्रापनेल के रूप में उल्लेख किया गया; वहाँ काफी कुछ तरीके
$path = '/some/where/img.gif';
$path = explode('.',$path);
$path = end($path);
धन्यवाद, यह कोड अच्छा दिख रहा है, लेकिन जैसा कि मैंने उपरोक्त कहा है, मैं सिर्फ 'pathinfo' जैसे प्रत्यक्ष मानक फ़ंक्शन का उपयोग करना चाहता हूं। – Siva
यह आमतौर पर (नहीं विस्तार के द्वारा, लेकिन इसकी सामग्री द्वारा) वास्तविक छवि प्रकार का पता लगाने के लिए अधिक वांछनीय है। इसके लिए, getimagesize()
का उपयोग करें।
यह सही उत्तर होना चाहिए। नाम में विस्तार कुछ भी हो सकता है। – Nishanthan
मैं आपको किसी भी अपलोड/लिंक की गई छवियों को किसी जीडी/छवि मैजिक चेक के माध्यम से चलाने और छवियों के भीतर छिपे किसी भी दुर्भावनापूर्ण कोड को रोकने के लिए इसे फिर से सहेजने की सलाह दूंगा। इससे आपको चीजों को आसान बनाने के लिए एक ही एक्सटेंशन के साथ सभी छवियों को सहेजने की अनुमति मिल जाएगी।
यह एक अच्छा सुझाव है, भले ही यह प्रश्न से संबंधित न हो। एक डाउनवोट के लायक नहीं है। हालांकि, जेपीजी को जीआईएफ में परिवर्तित करने और इसके विपरीत, कभी भी अच्छे नतीजे नहीं ले पाएंगे। –
धन्यवाद। मुझे पता है कि यह पूरी तरह से इस सवाल से संबंधित नहीं है, हालांकि मुझे लगा कि अपलोड की गई छवियों को स्वीकार करना है या नहीं, इससे पहले कि कुछ बुरा होता है, इस जानकारी को थूकना बेहतर होगा। आप पहले एक्सटेंशन की जांच भी कर सकते हैं, देखें कि दिए गए परिणाम स्वीकृत एक्सटेंशन की सरणी में मौजूद हैं या नहीं, और फिर इसे GD/ImageMagick चेक के माध्यम से चलाने के बाद सटीक उसी एक्सटेंशन के रूप में सहेजें। परिणाम न मिलने पर भी एक डिफ़ॉल्ट (पीएनजी कहें) रखें। – eklundchristopher
धन्यवाद, यह एक अच्छा सुझाव है। – Siva
मैं पहली बार इस सवाल का जवाब और लंगर पूर्व के साथ यूआरएल के साथ समस्या थी। google.com/image.jpg#anchor
बेहतर समाधान
$filename_from_url = parse_url($url);
$ext = pathinfo($filename_from_url['path'], PATHINFO_EXTENSION);
मैं तुम्हें सही रास्ते
$file_path = '/some/where/img.gif';
$info = new SplFileInfo($file_path);
$file_extension = $info->getExtension();
var_dump($file_extension);
अधिक विस्तार यहाँ The SplFileInfo class
मुझे आशा है कि यह आप में मदद मिलेगी के लिए सिफारिश करेंगे ।
चीयर्स!
मुदस्सर अली
मुझे लगता है कि सबसे सही तरीका गूंज exif_imagetype समारोह उपयोग कर रहा है:
exif_imagetype("/testdir/dir2/image.gif");
function get_image_type($image_path){
$extension = array(IMAGETYPE_GIF => "gif",
IMAGETYPE_JPEG => "jpeg",
IMAGETYPE_PNG => "png",
IMAGETYPE_SWF => "swf",
IMAGETYPE_PSD => "psd",
IMAGETYPE_BMP => "bmp",
IMAGETYPE_TIFF_II => "tiff",
IMAGETYPE_TIFF_MM => "tiff",
IMAGETYPE_JPC => "jpc",
IMAGETYPE_JP2 => "jp2",
IMAGETYPE_JPX => "jpx",
IMAGETYPE_JB2 => "jb2",
IMAGETYPE_SWC => "swc",
IMAGETYPE_IFF => "iff",
IMAGETYPE_WBMP => "wbmp",
IMAGETYPE_XBM => "xbm",
IMAGETYPE_ICO => "ico");
return $extension[exif_imagetype($image_path)];
}
इस तरह से काम करता है भले ही यूआरएल सर्वर पर छवि को एन्कोड करने के लिए प्रयोग किया जाता है - ठीक है। – pgee70
मुझे लगता है कि आसान तरीका Another Question के लिए strrpos()
और substr()
तरीकों
$path = "/testdir/dir2/image.gif";
$ext = substr($path, strrpos($path, '.')+1);
echo $ext; // output will be gif
अधिक जवाब का उपयोग कर इस प्रश्न से संबंधित
यह भी रास्ता है। – RobertPitt
मेरे पास 'hello.jpg' है लेकिन मैंने इसका नाम बदलकर' hello.gif 'कर दिया है और इसे अपलोड कर दिया है ताकि आपको एक्सटेंशन मिल सके लेकिन सही प्रकार न हो। पेक्का का अपमान आईएमओ बेहतर है – DrColossos
मूल प्रश्न केवल एक्सटेंशन को खोजने के लिए पूछता है। कोई सुरक्षा-जांच या अन्य जरूरत नहीं है। – fabrik