Na procházení adresářů se v minulosti používaly funkce opendir, readdir a closedir. Ty je na určité úlohy vhodné použít i nyní, pro většinu úloh je ale od PHP 4.3.0 (prosinec 2002) mnohem elegantnější použít funkci glob. Jak vypadá kód, který načte všechny soubory *.txt v aktuálním adresáři do pole?
<?php // starý způsob $soubory = array(); $dir = opendir("."); while (($filename = readdir($dir)) !== false) { if (preg_match('~\\.txt$~', $filename)) { $soubory[] = $filename; } } closedir($dir); // s využitím glob() $soubory = glob("*.txt"); // funkce se dá použít i přímo ve foreach cyklu foreach (glob("*.txt") as $filename) { echo "<li><a href='$filename'>$filename</a></li>\n"; } ?>
S touto funkcí je bohužel již delší dobu spojené jisté bezpečnostní riziko. To nám ale naštěstí nemusí vadit, protože použitím této funkce svůj skript zranitelnější neučiníme, ale naopak je možné tuto funkci zneužít k nekalým úmyslům. Toto bezpečnostní riziko ale může vést k tomu, že funkce bude na některých hostinzích zakázaná.