2015-04-23 3 views
1

Я использую glob для поиска каталогов внутри текущего, где находится мой индексный файл. Внутри я сохраняю html-страницы, извлеченные из EXCEL, и они создают каталоги папок, заканчивающиеся на .files. Есть ли способ глотать все каталоги, но исключать те, которые заканчиваются на .files?PHP Glob, исключить каталоги, содержащие .files в их имени

Вот мой код, как это в настоящее время:

<?php 
// set to current directory 
$dir = ''; 

// directories only. ignore files, etc. 
foreach(glob($dir.'*', GLOB_ONLYDIR) as $folder){ 
// do not include wordpress directories 
    if (($folder != '*') && ($folder != 'ΦΥΛΑΚΕΣ ΠΡΑΤΗΡΙΩΝ.files') && ($folder != 'wp-includes')) { 
    // list directories and their links 
?> 
    <li><a href="<?php echo $dir."/files/".$folder;?>"><?php echo $folder;?></li> 
<?php 
    } 
} 
?> 

EDIT: Как вы можете видеть, я могу исключить указанные папки, но я хочу, чтобы исключить все папки автоматически заканчивается в .files, как я сказал.

ответ

1

Вы можете использовать substr -функции сделать следующее:

<?php 
// set to current directory 
$dir = ''; 

// directories only. ignore files, etc. 
foreach(glob($dir.'*', GLOB_ONLYDIR) as $folder){ 
// do not include wordpress directories 
    if(($folder != '*') && (substr($folder , -6) != '.files') && ($folder != 'wp-includes')){ 
    // list directories and their links 
?> 
    <li> 
     <a href="<?php echo $dir."/files/".$folder;?>"><?php echo $folder;?></a> 
    </li> 
<?php 
    } 
} 
?> 
+0

Это сделало работу, в которой я хотел это сделать, у меня есть только один вопрос. Это удалит только папки, заканчивающиеся на .files? Он не удалит любую другую папку, которую я создаю там? – LamboLighting

+0

Да, это то, чего я хотел, удалив я из отображаемого списка, мой плохой. Это именно то, что я хотел! Большое спасибо! :) – LamboLighting

0

Я предпочитаю использовать preg_grep функцию

$src = glob("*",GLOB_ONLYDIR); 
$nomatch = preg_grep("/.*\.files$|^wp\-includes$/i",$src,PREG_GREP_INVERT); 

foreach($nomatch as $folder) 
{ 
    echo "print ".$folder; 
} 

верстку после выбора просто

+0

Я новичок в PHP, поэтому, пожалуйста, извините меня за вопрос. Какую часть моего кода я заменяю вашей, чтобы она работала? – LamboLighting

0

Я сожалею сообщение, я не использую его правильно, я пишу его здесь

<?php 
$cur = getcwd(); 
chdir($dir); 
$src = glob("*",GLOB_ONLYDIR); 
chdir($cur); 
$nomatch = preg_grep("/.*\.files$|^wp\-includes$/i",$src,PREG_GREP_INVERT); 

foreach($nomatch as $folder) 
{ 
?> 
    <li><a href="<?php echo $dir."/files/".$folder;?>"><?php echo $folder;?></li> 
<?php 
} 
?> 
Смежные вопросы