PHP ile dosya içinde dize ya da desen olan dizindeki tüm dosyaları bul

0 Cevap php

Ben dosya belirli bir desenle eşleşen PHP ile (özyinelemeli ya da olmayan) bir dizindeki dosyaları listelemek için çalışıyorum. Ben bu yüzden teklif verebilecek herhangi bir yardım iyi olurdu regex çok büyük olmamıştım. Ben döndürülen dosya üzerinde değişmez bir kontrol için arama yapabilir, ama ben böyle harika bir fikir değil bence :)

Update + Final Solution: 1/18/2011 @ 8:06 PM

Ben biraz daha regex anladığınızda ne arıyordu yapmak için başka bir yol buldu. Ben regex nerede hakkında tamamen hayal kırıklığına uğradım Verilen, ben şimdi çevrimiçi kılavuzları bulgu daha basit açısından bu bazı açıklamak için beni bir kenara çekerek bir arkadaşına sayesinde bunu biraz olsun.

Bu çözüm temelde aynı zamanda belirli bir türü (jpg, jpeg, png) bir görüntü olduğunu doğrulanırken, "prefixone" veya "prefixtwo" ya bir lider öneki ile özel bir görüntü (ler) için denetler ve aşağıdaki biçimlerden herhangi eşleşir .

(Bunu kullanıyordum) Wordpress geçti sülük bağlı olarak, bu normal bir ifade ile eşleşir. İşte bir örnek listesidir:

prefixone.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.002.jpeg
prefixtwo.123-abc._tag2._tag1.003.jpg
prefixone.123-abc._tag2.004.jpeg
prefixtwo.345-xyz._tag2._tag3._tag1.005.jpg
prefixtwo.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.001.png
prefixtwo.456-rst._tag1.001.png

Slug eşleşmiş potansiyel bizim opendir () fonksiyonu ile dosya listesinde iade edilmiş, tüm bu dosyaları, bu herhangi bir maç olabilirdi. Ne olursa olsun dosya bilgi etiketleme sipariş.

Ben bu regex ile mücadele başka bir kullanıcıya yardımcı olur umarım. Bu asmak almak için bir acı ama bir kaç temel şeyleri anlamak, geri kalanı hızla kendi bina başlamak için yerine düşmeye başlar.

Kod:

<?php
// create an array to hold directory list
$results = array();

// create a handler for the directory
$directory = $_SERVER['DOCUMENT_ROOT'].'/some/path/to/images/';
$handler = opendir($directory);

// open directory and walk through the filenames
while ($file = readdir($handler)) {

    // if file isn't this directory or its parent, add it to the results
    if ($file != "." && $file != "..") {

        // check with regex that the file format is what we're expecting and not something else
        if(preg_match('#^(prefixone|prefixtwo)[^\s]*\.'.$wordpress-slug.'\.[^\s]+(\.(jpg|jpeg|png))#', $file)) {

            // add to our file array for later use
            $results[] = $file;
        }
    }
}
?>

Aslında bunun için özyinelemeli gerek yoktu, ama orada gerçekten özyinelemeli örnekler bol çevrimiçi olduğunu ve gerçekten benim endişeleri en az oldu. Yukarıdaki kod yeterliydi kadar desen tarafından İçerik izolasyon bu görevin çekirdek oldu.

Sidenote:

Dün "kabul yorumlar" işaret olanlar için, ben eksik olduğunu hiç bir fikrim yoktu ve ben özür dilerim. Ben kötü bir gün geçiriyordum. Üzgünüm yorumlar hakkında kimseye ek gibiydi eğer. Bu büyük bir topluluk ve ben de, nerede can geri vermek için mutluyum.

0 Cevap