Функция поиска PHP на сайте. (легко) - PullRequest
0 голосов
/ 25 ноября 2011

Я реализовал функцию поиска 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 ]

1 голос
/ 25 ноября 2011

Поиск функции glob http://php.net/manual/en/function.glob.php

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

Редактировать: не обращая внимания на ваш вопрос, он звучит совершенно иначе, чем ваш код. Я предполагаю, что то, что я написал, неверно

0 голосов
/ 28 ноября 2011

Простой поиск, это не рекурсивно.Дайте ему каталог, и он будет выплевывать найденные файлы

$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";    
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...