我正在使用jQuery文件树来显示目录列表,以及随文件树代码提供的标准PHP连接器。
一切正常,但我需要过滤列表以避免包含hiden文件而不是所需的文件夹。我在PHP或JS方面的技能不允许我在这里粘贴代码,希望我可以根据某些模式获得一些额外的行来隐藏不需要的文件。
谢谢!
HTML代码:
<html>
<head>
<link rel="stylesheet" href="../../js/ft/jqueryFileTree.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="../../js/ft/jqueryFileTree.js"></script>
<script type="text/javascript">
function openFile(file) {
window.location = file;
}
$(document).ready (function() {
$('.filetree').fileTree({
root: '../../../est/dir/',
script: '../../js/ft/connectors/jqueryFileTree.php',
function(file) {
window.open(file);
});
});
</script>
</head>
<body>
<div class="filetree"></div>
</body>
</html>
PHP代码:
<?php
$_POST['dir'] = urldecode($_POST['dir']);
if( file_exists($_POST['dir']) ) {
$files = scandir($_POST['dir']);
natcasesort($files);
if( count($files) > 2 ) { // The 2 accounts for . and ..
echo "<ul class=\"jqueryFileTree\" style=\"display: none;\">";
// All dirs
foreach( $files as $file ) {
if( file_exists($_POST['dir'] . $file) && $file != '.' && $file != '..' && is_dir($_POST['dir'] . $file) ) {
echo "<li class=\"directory collapsed\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "/\">" . htmlentities($file) . "</a></li>";
}
}
// All files
foreach( $files as $file ) {
if( file_exists($_POST['dir'] . $file) && $file != '.' && $file != '..' && !is_dir($_POST['dir'] . $file) ) {
$ext = preg_replace('/^.*\./', '', $file);
echo "<li class=\"file ext_$ext\"><a href=\"#\" rel=\"" . htmlentities($_POST['dir'] . $file) . "\">" . htmlentities($file) . "</a></li>";
}
}
echo "</ul>";
}
}
?>
PS:来自here
的原始来源答案 0 :(得分:1)
我不熟悉jQuery文件树,但我相信你问题的关键在于循环。
您唯一需要做的就是创建一个黑名单,一个数组,其中包含您不想显示的文件夹/文件的名称。
$blacklist = array('namefile1', 'namefolder1', 'namefile2');
然后在循环内部执行检查,以便在文件/文件夹名称与黑名单内的名称匹配时区分名称(区分大小写)。
foreach( $files as $file )
{
if (in_array($file, $blacklist))
continue;
.... the rest of the code ...
.... goes here ..............
}
这基本上就是你需要做的。您还可以使用正则表达式和preg_match函数,以使其更灵活。