Nasıl php kullanarak PDF bağlantı yapmak için bir dizin tarama olur?

4 Cevap php

Ben PHP için gerçekten yeni değilim ama ne yapmak istiyorum benim şirketlerin iş teklifiyle bazı içerikleri dinamik bir tablo olun.

I adlı bir klasörde iş tanımlarının tüm PDF'leri koyarsanız .. / kök dizininde bulunan php dosyası ile jobops ne yapmam gerekir.

4 Cevap

<?php
  $directory = "/jobops";
  $contents = scandir($directory);
    if ($contents) {
       foreach($contents as $key => $value) {
             if ($value == "." || or $value == "..") {
                unset($key);
             }
       }
    }
        echo "<ul>";
    foreach($contents as $k => $v) {
      echo "<li><a href=\"$directory/" . $v . "\">link text</a></li>";
    }
        echo "</ul>";

?>

Çalışmalıdır. , Dizin alır tarar, bir dizi $contents ("." Ve "..") göreceli adresler kaldırır ve sonra onları yankıları içine tüm dosya adlarını eşler.

, foreach olsa, nispeten pahalı olduğunu unutmayın böylece isteyebilirsiniz basitçe unset $contents[0] ve $contents[1].


Edited in response to the following (from the OP):

Warning: scandir(www.markonsolutions.com/jobops) [function.scandir]: failed to open dir: No such file or directory in /home/content/t/i/m/timhish/html/test.php on line 5 Warning: scandir() [function.scandir]: (errno 2): No such file or directory in /home/content/t/i/m/timhish/html/test.php on line 5 Warning: Invalid argument supplied for foreach() in /home/content/t/i/m/timhish/html/test.php on line 15 I changed ti from "/jobops" thinking it was a relative directory thing but apparently that's not it. also im not sure what the /home/content....... thing is but i am currently hosted with go daddy maybe thats how they store things?

$directory değişken komut dosyası çağrıldığını nerede göredir. O should Benim için, $directory = "jobops" klasörü ve komut aynı yerde saklanır varsayarak olabilir, bu nedenle benim durumumda, bu kök klasörden çalışır. Lütfen sunucunun dizin yapısı bilmeden Gerçekten sana yardım edemem, ama scandir() fonksiyonu ile bir sorunu iktidar öneririm.

Bunu yapmak script ne gibi denilen aynı dizinde bir klasör oluşturun, en azından bir görüntü ile doldurmak için (ki böylece if() unset tüm dizi değil takip) ve görmek eğer çalışır. O does o zaman klasörüne göreli yolu bulma ile sıkışmış iseniz. O doesn't sonra kendimi sıkışmış ediyorum eğer.

fnmatch() veya glob() fonksiyonları bir göz atın.

(Ben bir yorum olarak göndermek isterdi, ama bağlantı çok uzun olurdu)

SPL (PHP5) dizin kastetmek için güzel bir arayüz sağlar:

// whitelist of valid file types (extension => display name)
$valid = array(
    'pdf' => 'PDF',
    'doc' => 'Word'
);

$files = array();    

$dir = new DirectoryIterator($directory_path);

foreach($dir as $file)
{
    // filter out directories
    if($file->isDot() || !$file->isFile()) continue;

    // Use pathinfo to get the file extension
    $info = pathinfo($file->getPathname());

    // Check there is an extension and it is in the whitelist
    if(isset($info['extension']) && isset($valid[$info['extension']])) 
    {
        $files[] = array(
            'filename' => $file->getFilename(),
            'size' => $file->getSize(),
            'type' => $valid[$info['extension']], // 'PDF' or 'Word'
            'created' => date('Y-m-d H:i:s', $file->getCTime())
        );
    }
}
<?php
  // open this directory 
$myDirectory = opendir(".");

// get each entry
while($entryName = readdir($myDirectory)) {
    $dirArray[] = $entryName;
}

// close directory
closedir($myDirectory);

//  count elements in array
$indexCount = count($dirArray);
Print ("$indexCount files<br>\n");

// sort 'em
sort($dirArray);

// print 'em
print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n");
print("<TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n");
// loop through the array of files and print them all
for($index=0; $index < $indexCount; $index++) {
        if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden files
    	print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>");
    	print("<td>");
    	print(filetype($dirArray[$index]));
    	print("</td>");
    	print("<td>");
    	print(filesize($dirArray[$index]));
    	print("</td>");
    	print("</TR>\n");
    }
}
print("</TABLE>\n");


?>

çalışıyor gibi görünüyor ama ben sadece bir alt dir arama ve sadece *. pdf dosyaları için oynamak gerekir