网站上的PHP搜索功能。 (简单)

时间:2011-11-25 11:12:23

标签: php search directory

我在客户网站上实现了php搜索功能。我想要做的是在网站目录中搜索特定pdf文件的文件。

然而我似乎无法让它发挥作用。如果我在搜索框中键入“pdf”,它将返回目录中的所有文件,但如果我输入特定的文件名,则它不返回任何内容。

以下是我正在使用的php脚本:

  <?php
    $my_server = "http://www.gwent.org".":".getenv("http://www.gwent.org_80");
    $my_root = getenv("docroot/");
    $s_dirs = array("");
    $hits = null;
    $full_url = $_SERVER['PHP_SELF'];
    $site_url = eregi_replace('customer_information.php', '', $full_url);
    $directory_list = array('sold_msds');
    $s_files = ".pdf"; 
    foreach($directory_list as $dirlist)
    {
        $directory_url = $site_url.$dirlist."/";
        $getDirectory = opendir($dirlist);

        while($dirName = readdir($getDirectory))
            $getdirArray[] = $dirName;

        closedir($getDirectory);

        $dirCount = count($getdirArray);
        sort($getdirArray);

        for($dir=0; $dir < $dirCount; $dir++)
        {
            if (substr($getdirArray[$dir], 0, 1) != ".")
            {
                $label = eregi_replace('_', ' ', $getdirArray[$dir]);

                $directory = $dirlist.'/'.$getdirArray[$dir]."/";
                $complete_url = $site_url.$directory;

                if(is_dir($directory))
                {
                    $myDirectory = opendir($directory);

                    $dirArray = null;

                    while($entryName = readdir($myDirectory))
                        $dirArray[] = $entryName;

                    closedir($myDirectory);

                    $indexCount = count($dirArray);
                    sort($dirArray);
                }
                else
                {
                    $hits++;

                    if(file_exists($dirlist."/".$label))
                    {
                        $fd=fopen($dirlist."/".$label, "r");

                        $text=fread($fd, 50000);

                        $keyword_html = htmlentities($keyword);

                        if(!empty($keyword))
                        {
                            $do=stristr($text, $keyword) || stristr($text, $keyword_pdf);
                        }

                        if($do)
                        {
                            $strip = strip_tags($text);
                            $keyword = preg_quote($keyword);
                            $keyword = str_replace("/","\/","$keyword");
                            $keyword_html = preg_quote($keyword_html);
                            $keyword_html = str_replace("/","\/","$keyword_html");
                            echo "<span>";
                            if(preg_match_all("/((\s\S*){0,3})($keyword|$keyword_html)((\s?\S*){0,3})/i", $strip, $match, PREG_SET_ORDER));
                            {
                                $number=count($match);

                                if($number > 0)
                                {
                                    echo "<a href='".$dirlist."/".$label."'>".$label."</a> (".$number.")";
                                    echo "<br />";
                                }

                                for ($h=0;$h<$number;$h++)
                                {
                                    if (!empty($match[$h][3]))
                                    {
                                        printf("<i><b>..</b> %s<b>%s</b>%s <b>..</b></i>", $match[$h][1], $match[$h][3], $match[$h][4]);

                                    }
                                }


                                echo "</span><br /><br />";
                                if($number > 0):
                                    echo "<hr />";
                                endif;
                            }
                        }
                    }
                }
            }
        }
    }
    ?>

非常感谢提前

2 个答案:

答案 0 :(得分:1)

查找glob函数http://php.net/manual/en/function.glob.php

$found = glob("/path/to/dir/*.pdf");

编辑:没关系你的问题使它听起来与你的代码完全不同。我猜我发布的是不正确的

答案 1 :(得分:0)

简单搜索,这不是递归的。给它一个目录,它会吐出找到的文件

$files = glob("c:/xampp/htdocs/*.php");
if(empty($files)) {
    echo "No PHP Files Found";
}
else {
    foreach($files as $f) {
        echo "PHP File Found: ".$f."\n";    
    }
}