PHP - klasör ve HTML görüntü içeriği yineleme

1 Cevap php

Ben şu anda oluşturulan ve (yasal olarak) yılda indirdiğiniz tüm farklı web şablonları bir bakış elde etmek için bir yöntem geliştirmek için çalışıyorum. I WordPress stilleri ve her şeyi ile beton dosyasını gösteren, küçük bir önizleme penceresinde şablonlarını önizleme olduğu gibi onları görüntüleyen düşündüm.

Nasıl böylece onları satır ve sütunlar halinde bölmek ve önizleme ve sayfalandırma açık Ajax kalıcı pencere oluşturmak ve do?

Ben yönetebilirsiniz inanıyorum, ancak birkaç klasörler üzerinde yineleme ve daha sonra tüm index.htm bulma ve index.html sayfaları ve bunları görüntüleme hakkında kavramdır kendisidir.

Ben PHP dizinleri ile çok çalıştık değil ve ben şimdiye kadar bulduğum tek referansları ve kod kütükleri sadece içerdiği ne gibi belirli bir dizindeki tüm dosyaları listelemek için.

Bir komut dosyası, bir işlev, pasajı ya da böyle bir (muhtemelen basit) önizleme işlevini oluşturmak için sadece bazı bilgiler var mı?

1 Cevap

Hepsi bir dizinde iseniz glob('*.html') çalışacaktır.

Geçerli dizinde ve alt dizinleri ve alt dizinleri (vb) alt dizinleri her şeyi kontrol - - Eğer bir dosya ağacı yürümek istiyorsanız o zaman birkaç seçenek var.

Bir çağırma sistemi PHP yöntemlerinden biri ile Unix find komutu kullanmak olacaktır. Gibi bir şey:

bulmak -Name "*. Html"-print

gibi bir şey görünüyor size çıkış alacak

search_root_dir/blah.html
search_root_dir/foo.html
search_root_dir/subdir/baz.html
search_root_dir/subdir/bah.html
...

Yapabileceğiniz başka bir şey chdir ve readdir ya da belki scandir, gibi bir şey kullanan bir özyinelemeli fonksiyon yazmaya:

function dir_walk($start_dir,$func) {
    $entries = scandir($start_dir);
    foreach($entries as $entry) {
        if($entry == '.' || $entry == '..') {
            /*skip these*/
        } else if(is_dir($entry)) {
            dir_walk($start_dir.'/'.$entry,$func);
        } else $func($start_dir.'/'.$entry);
    }
}

Sonra, başka bir fonksiyon yazmak:

$html_files = array();
function record_html_files($filename) {
   global $html_files;
   if(strpos($filename,'*.html') === (strlen($filename) - 6))
     $html_files[] = $filename;
}

Ve bu gibi diyoruz:

dir_walk('/path/to/search/root','record_html_files');

Ya da, bu yüzden bir yöntem ile bir nesneyi kabul dir_walk yazmak içeride yapabilirsiniz diyoruz. Burada olası bazı farklılıklar var.