php搜索文件名,PHP搜索文件且列出文件名的代码参考

先来看一个简单的php搜索文件并显示的代码。

如下:

/**

* 搜索文件并列出文件名

* opendir打开目录

* readdir读取文件名

* unlink删除文件

* edit by www.jbxue.com

*/

$dir = "file/class/";

//获取目录下的文件

if (is_dir($dir)) {

if ($dh = opendir($dir)) {

while (($file = readdir($dh)) !== false) {

if($file!="."&&$file!=".."){

$unexit[]=$file;}

}

closedir($dh);

}

}

?>

下面是功能更强,复杂点的。

/**

* 文件: search.php

* 功能: 搜索指定目录下的HTML文件

*/

/* 基本函数 */

//获取目录下文件函数

function getFile($dir)

{

$dp = opendir($dir);

$fileArr = array();

while (!false == $curFile = readdir($dp)) {

if ($curFile!="." && $curFile!=".." && $curFile!="") {

if (is_dir($curFile)) {

$fileArr = getFile($dir."/".$curFile);

} else {

$fileArr[] = $dir."/".$curFile;

}

}

}

return $fileArr;

}

//获取文件内容

function getFileContent($file)

{

if (!$fp = fopen($file, "r")) {

die("Cannot open file $file");

}

while ($text = fread($fp, 4096)) {

$fileContent .= $text;

}

return $fileContent;

}

//搜索指定文件

function searchText($file, $keyword)

{

$text = getFileContent($file);

if (preg_match("/$keyword/i", $text)) {

return true;

}

return false;

}

//搜索出文章的标题

function getFileTitle($file, $default="None subject")

{

$fileContent = getFileContent($file);

$sResult = preg_match("/

.*/i", $fileContent, $matchResult);

$title = preg_replace(array("/(

)/i","/()/i"), "", $matchResult[0]);

if (empty($title)) {

return $default;

} else {

return $title;

}

}

//获取文件描述信息

function getFileDescribe($file,$length=200, $default="None describe")

{

$metas = get_meta_tags($file);

if ($meta['description'] != "") {

return $metas['description'];

}

$fileContent = getFileContent($file);

preg_match("/(

)/is", $fileContent, $matchResult);

$pattern = array("/()/i","/()+/i", "/()+/i", "/()+/i",

"/([])+.*([])+/i","/&/i","/"/i","/'/i", "/\s/");

$description = preg_replace($pattern, "", $matchResult[0]);

$description = mb_substr($description, 0, $length)." ...";

return $description;

}

//加亮搜索结果中的关键字

function highLightKeyword($text, $keyword, $color="#C60A00")

{

$newword = "$keyword";

$text = str_replace($keyword, $newword, $text);

return $text;

}

//获取文件大小(KB)

function getFileSize($file)

{

$filesize = intval(filesize($file)/1024)."K";

return $filesize;

}

//获取文件最后修改的时间

function getFileTime($file)

{

$filetime = date("Y-m-d", filemtime($file));

return $filetime;

}

//搜索目录下所有文件

function searchFile($dir, $keyword)

{

$sFile = getFile($dir);

if (count($sFile) <= 0) {

return false;

}

$sResult = array();

foreach ($sFile as $file) {

if (searchText($file, $keyword)) {

$sResult[] = $file;

}

}

if (count($sResult) <= 0) {

return false;

} else {

return $sResult;

}

} //by www.jbxue.com

/* 测试代码 */

//指定要搜索的目录

$dir = "./php_Linux";

//要搜索的关键字

$keyword = "sendmail";

$fileArr = searchFile($dir, $keyword);

$searchSum = count($fileArr);

echo "搜索关键字: $keyword   搜索目录: $dir   搜索结果: $searchSum



";

if ($searchSum <= 0) {

echo "没有搜索到任何结果";

} else {

foreach ($fileArr as $file) {

echo "". highLightKeyword(getFileTitle($file), $keyword) .

" - ".getFileSize($file)." ". getFileTime($file) .

"
\n".highLightKeyword(getFileDescribe($file), $keyword) .

"
";

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值