2015-05-18 21 views
5

Potrzebuję sprawdzić folder obrazów, aby dodać zdjęcia produktów. Moja tablica listy produktów zawiera kody SKU, takie jak a48be25, A48be29, A48BE30, a mój folder obrazów zawiera obrazy, takie jak a48BE25_1.jpg, a48bE29_2.JPG, A48BE30_1.jpg i tak dalej.PHP - Rozróżnianie wielkości liter Szukaj

Jak widać, obrazy i jednostki SKU są pomieszane. Muszę jakoś dopasować kody SKU do nazw plików. Jeśli użyję glob("my/dir/{$SKU}*.jpg"), nie będzie działać w przypadku wrażliwych systemów operacyjnych, zgodnie z moją najlepszą wiedzą. Czy istnieje sposób na wymuszenie wyszukiwania w sposób niewrażliwy na wielkość liter?

EDYCJA: Myślę, że ten wątek nie jest duplikatem this one. Mówię to, ponieważ w moim przypadku mogę mieć wiele jednostek SKU, które mogą mieć mieszane przypadki. W wymienionym wątku OP miał tylko słowo CSV w mieszanych przypadkach, więc glob('my/dir/*.[cC][sS][vV]') może tam dobrze działać.

+2

Czy próbowałeś [drugiej odpowiedzi] (http://stackoverflow.com/a/2520643/749181) na powiązane pytanie? Sugeruje, aby najpierw pobrać nazwy plików, a następnie porównać je w sposób niewrażliwy na wielkość liter w drugim kroku. –

+0

@GeorgeCummins Mam ponad 300000 zdjęć i 60000 produktów do dodania. Wiem, że mógłbym to zrobić, ale byłoby to zbyt drogie, prawda? Jeśli nic nie działa, to będę musiał przyjąć takie podejście. :) – Gogol

+1

@ noc2spam ツ Myślę, że jeśli masz tyle zdjęć, to szybciej poradzisz sobie z tym php i nie pozwól, aby system plików to zrobił. – Rizier123

Odpowiedz

2

Ostatecznie skończyłem pobierać wszystkie obrazy z folderu i sprawdzać dla każdego sku w tablicy nazw obrazów.

Poniższy kod rozwiązać mój problem:

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

Niemniej jednak chciałbym, aby zobaczyć wielkość liter glob realizowane w przyszłości.

+1

Utrzymuję tę kartę otwartą lol - Cieszę się, że znalazłeś rozwiązanie, jednak nieważne jak nieważne jest to, że glob jest wartym dodatkiem do przyszłej wersji PHP. Coś, co możesz opublikować na php.net - * Pozdrawiam * –

+0

Niestety, nie mogę wysłać kodu C. Jestem do tego zbyt szczęśliwy. Jestem tylko programistą internetowym. Mam nadzieję, że ktoś zrobi to w przyszłym wydaniu php. :) – Gogol

+2

Żadnych problemów. Przekażę jednak słowo. Mam znajomego, który zna tego faceta na PHP.net ;-) * okrzyki * –

Powiązane problemy