ウェブサイト上のPHP検索機能。 (簡単)

私はクライアントのWebサイトでPHP検索機能を実装しています。私がしたいことは、特定のpdfファイルのWebサイトディレクトリ内のファイルを検索することです。

しかし、私はそれを動作させるように見えることはできません。検索ボックスに「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 "";
                            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 "".$label." (".$number.")";
                                    echo "
"; } for ($h=0;$h<$number;$h++) { if (!empty($match[$h][3])) { printf(".. %s%s%s ..", $match[$h][1], $match[$h][3], $match[$h][4]); } } echo "


"; if($number > 0): echo "
"; endif; } } } } } } } ?>

多くの感謝を事前に

3
ようこそ!これはコードのロットです。間違いなく多すぎます。間違っている箇所や正確な箇所について詳しく説明してください。関連するコードだけを表示するように凝縮してください。ありがとう!
追加された 著者 Pekka 웃,
あなたはどこで$ s_files = ".pdf"を使っていますか? ?
追加された 著者 Daniel Ruf,
ereg * 関数を使用しないでください。代わりに preg * を使用してください。少なくとも、どちらか一方に固執してください。
追加された 著者 DaveRandom,
user1065439:それが簡単だと分かったら、どうしてやりませんか?
追加された 著者 Mitch Wheat,

2 答え

Look up the glob function http://php.net/manual/en/function.glob.php

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

編集:あなたの質問は、あなたのコードがやっていることとはまったく違ったものになってしまいます。私が投稿したものが間違っていると推測している

1
追加された
完全に間違っているわけではなく、上で実装されたものよりもファイルリストを取得する方がいい方法です。問題を直接解決するわけではありませんが、まったく役に立たないわけではありません。しかし、コメントとして良いかもしれない...
追加された 著者 DaveRandom,
コメント/回答ありがとう。私はあなたとすべてのレベルでレベルを上げ、私は彼の首を呼吸している厳しいMDを持っていたフロントエンドのデザイナーであることを伝えます!したがって誰でもファイル名だけで特定のディレクトリをphpファイルで検索するウェブサイトに検索機能を置く方法をlaymansで表示/教えてもらえますか?事前に多くの感謝!
追加された 著者 user1065439,

単純検索。これは再帰的ではありません。それにディレクトリを与えると、見つかったファイルが吐き出されます

$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";    
    }
}
0
追加された
これをウェブサイト上の検索フォームにリンクすると、ユーザーは正確なファイル名を入力してディレクトリ内の関連するpdfを表示できますか?ありがとう
追加された 著者 user1065439,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com