2015-05-18 28 views
5

Bazı ürün resimlerinin eklenmesi için görüntü klasörünü kontrol etmem gerekiyor. Ürün listemi dizisi a48be25, A48be29, A48BE30 gibi SKU'lara sahiptir ve görüntü klasörüm a48BE25_1.jpg, a48bE29_2.JPG, A48BE30_1.jpg gibi görüntülere sahiptir.PHP - Büyük/küçük harf duyarlı Dosya Arama

Gördüğünüz gibi, görüntüler ve SKU'lar karıştırılır. SKU'ları bir şekilde dosya adlarıyla eşleştirmem gerekiyor. glob("my/dir/{$SKU}*.jpg") kullanırsam, en iyi bilgime göre hassas işletim sistemlerinde çalışmayacaktır. Davaya duyarsız bir şekilde arama yapmak için glob'u zorlamak için bir yol var mı?

DÜZENLEME: Bu iş parçacığının bir kopyası this one olduğunu sanmıyorum. Bunu söylüyorum çünkü benim durumumda karışık vakalara sahip olabilecek birçok SKU'larım olabilir. Söz konusu iş parçacığında, OP yalnızca CSV kelimesini karışık durumlarda vardı, bu yüzden glob('my/dir/*.[cC][sS][vV]') orada iyi çalışabilir.

+2

Bağlantılı soruya [ikinci cevap] (http://stackoverflow.com/a/2520643/749181) denediniz mi? Önce dosya adlarını getirmenizi, ardından bunları ikinci adımda büyük/küçük harfe duyarlı bir şekilde karşılaştırmanızı önerir. –

+0

@GeorgeCummins Eklenecek 300.000'den fazla resmim ve 60000 ürünüm var. Bunu yapabileceğimi biliyorum ama çok pahalı değil mi? Hiçbir şey işe yaramıyorsa, bu yaklaşımı benim almam gerekecek. :) – Gogol

+1

@ noc2spam so Çok fazla görüntü varsa, bunu php ile işlemek ve dosya sisteminin bunu yapmasına izin vermemek daha hızlıdır. – Rizier123

cevap

2

Nihayetinde tüm görüntüleri klasörden getirmeyi ve görüntü adı dizisindeki her bir sku'yu kontrol etmeyi bitirdim. Ben küçük harfe duyarlı olmayan glob gelecekte uygulanacak görmek isterim, Yine

$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); 
} 

:

Aşağıdaki kod

benim sorun çözüldü.

+1

Bu sekmeyi açık tutuyorum lol - Bir çözüm bulduğuna sevindim, ancak sizin de belirttiğiniz gibi büyük küçük harf duyarlı bir glob, gelecekteki bir PHP sürümü için değerli bir katkı olacaktır. Php.net'e bir şey gönderebilirsiniz - * Şerefe * –

+0

Üzgünüm adam C kodunu gönderemiyorum. Bunun için çok noob'um. Ben sadece bir web deviyim. Umarım birileri gelecek bir php sürümünde yapar. :) – Gogol

+2

Sorun yok. Yine de kelimeyi geçeceğim. PHP.net'de bu adamı tanıyan bir arkadaşım var ;-) * şerefe * –

İlgili konular