我一直在使用一个方便的PHP脚本,它扫描我的网站并吐出指向它找到的所有页面的链接。问题是,它还扫描我的'includes'文件夹,其中包含我所有的.inc.php文件。
显然我宁愿它在扫描网站时忽略这个文件夹,但对于我的生活,我看不到如何编辑脚本告诉它这样做。
脚本是:
<?php
// starting directory. Dot means current directory
$basedir = ".";
// function to count depth of directory
function getdepth($fn){
return (($p = strpos($fn, "/")) === false) ? 0 : (1 + getdepth(substr($fn, $p+1)));
}
// function to print a line of html for the indented hyperlink
function printlink($fn){
$indent = getdepth($fn); // get indent value
echo "<li class=\"$indent\"><a href=\"$fn\">"; //print url
$handle = fopen($fn, "r"); //open web page file
$filestr = fread($handle, 1024); //read top part of html
fclose($handle); //clos web page file
if (preg_match("/<title>.+<\/title>/i",$filestr,$title)) { //get page title
echo substr($title[0], 7, strpos($title[0], '/')-8); //print title
} else {
echo "No title";
}
echo "</a></li><br>\n"; //finish html
}
// main function that scans the directory tree for web pages
function listdir($basedir){
if ($handle = @opendir($basedir)) {
while (false !== ($fn = readdir($handle))){
if ($fn != '.' && $fn != '..'){ // ignore these
$dir = $basedir."/".$fn;
if (is_dir($dir)){
listdir($dir); // recursive call to this function
} else { //only consider .html etc. files
if (preg_match("/[^.\/].+\.(htm|html|php)$/",$dir,$fname)) {
printlink($fname[0]); //generate the html code
}
}
}
}
closedir($handle);
}
}
// function call
listdir($basedir); //this line starts the ball rolling
?>
现在我可以看到脚本被告知忽略某些文件的位置,我尝试追加:
&& $dir != 'includes'
...在很多地方都有它,但我的PHP知识太过于不知道如何将该代码集成到脚本中。
如果有人可以提供帮助,那么你将为我挽救一个非常大的头痛。欢呼声。
答案 0 :(得分:1)
将此行添加:
if ($fn != '.' && $fn != '..'){ // ignore these
所以它是
if ($fn != '.' && $fn != '..' && $fn != 'includes'){ // ignore these
答案 1 :(得分:1)
你的道路必须是绝对的。将它添加到listdir的顶部
function listdir($basedir){
if($basedir == '/path/to/includes') {
return;
} [...]
这也确保只会忽略一个包含文件夹。