2015-05-18 8 views
5

मुझे कुछ उत्पाद छवियों को जोड़ने के लिए छवि फ़ोल्डर की जांच करने की आवश्यकता है। मेरी उत्पाद सूची सरणी में एसकेयू हैं जैसे a48be25, A48be29, A48BE30 और मेरे छवि फ़ोल्डर में a48BE25_1.jpg, a48bE29_2.JPG, A48BE30_1.jpg जैसी छवियां हैं और इसी तरह।PHP - केस असंवेदनशील फ़ाइल खोज

जैसा कि आप देख सकते हैं, छवियां और एसकेयू मिश्रित हैं। मुझे किसी भी तरह से फ़ाइल नामों के लिए एसकेयू से मेल खाना चाहिए। अगर मैं glob("my/dir/{$SKU}*.jpg") का उपयोग करता हूं, तो यह मेरे ज्ञान के सर्वोत्तम के अनुसार संवेदनशील ऑपरेटिंग सिस्टम के मामले में काम नहीं करेगा। केस-असंवेदनशील तरीके से खोजने के लिए glob को मजबूर करने का कोई तरीका है?

संपादित करें: मुझे नहीं लगता कि यह धागा this one का डुप्लिकेट है। मैं यह कह रहा हूं क्योंकि मेरे मामले में मेरे पास कई एसकेयू हो सकते हैं जिनमें मिश्रित मामले हो सकते हैं। उल्लिखित धागे में, ओपी मिश्रित मामलों में केवल CSV शब्द था, इसलिए glob('my/dir/*.[cC][sS][vV]') वहां अच्छी तरह से काम कर सकता था।

+2

क्या आपने [दूसरे उत्तर] (http://stackoverflow.com/a/2520643/749181) को लिंक किए गए प्रश्न पर आज़माया है? यह सुझाव देता है कि आप पहले फ़ाइल नाम प्राप्त करते हैं, फिर उन्हें दूसरे चरण में केस-असंवेदनशील तरीके से तुलना करें। –

+0

@ जॉर्ज कॉमिनस में 300,000 से अधिक छवियां और 60000 उत्पाद जोड़ने हैं। मुझे पता है कि मैं यह कर सकता हूं लेकिन यह बहुत महंगा होगा ना? अगर कुछ भी काम नहीं करता है, तो मुझे यह दृष्टिकोण लेना होगा। :) – Gogol

+1

@ noc2spam ツ मुझे लगता है कि यदि आपके पास इतनी सारी छवियां हैं तो php के साथ इसे संभालना तेज़ है और फाइल सिस्टम को ऐसा करने दें। – Rizier123

उत्तर

2

अंत में मैं फ़ोल्डर से सभी छवियों को लाने और छवि नाम सरणी में प्रत्येक sku की जांच करने के अंत में समाप्त हुआ।

निम्नलिखित कोड मेरी समस्या हल:

$path = $image_path ."/*.{jpg,png,gif}"; 
$all_images = glob($path, GLOB_BRACE); 
$icount = count($all_images); 
for($i = 0; $i < $icount; $i++) 
{ 
    $all_images[$i] = str_replace($image_path.'/', '', $all_images[$i]); 
} 

foreach($products as $product){ 
    $matches = preg_grep ('/^'.$product['sku'].'(\w+)/i', $all_images); 
} 

फिर भी, मैं यह देखने के लिए केस-संवेदी glob भविष्य में लागू अच्छा लगेगा।

+1

मैं इस टैब को खुले लॉल रख रहा हूं - आपको यह पता लगाने के लिए खुशी हुई है कि आपको एक समाधान मिला है, हालांकि एक केस-असंवेदनशील ग्लोब जो आप बताते हैं, भविष्य में PHP रिलीज के लिए एक योग्य अतिरिक्त होगा। कुछ आप php.net पर पोस्ट कर सकते हैं - * चीयर्स * –

+0

क्षमा करें आदमी मैं सी कोड पोस्ट नहीं कर सकता। मैं इसके लिए बहुत कुछ नहीं हूँ। मैं केवल एक वेब देव हूँ। मुझे उम्मीद है कि भविष्य में PHP रिलीज में कोई ऐसा करता है। :) – Gogol

+2

कोई समस्या नहीं है। मैं हालांकि शब्द चारों ओर पास करेंगे। मेरे पास एक दोस्त है जो इस आदमी को PHP.net पर जानता है ;-) * चीयर्स * –

संबंधित मुद्दे