在目录

时间:2016-07-27 19:12:06

标签: php

我正在为我的博客(http://iljalicious.net/suche/)开发一个搜索机器,我很抱歉网站上使用的语言不是英语,但我为你翻译了代码:

$lookingfor = $_POST['word'];

$lines = file('../archiv/2015/juli/eintraege.dat');

$found = false;
foreach($lines as $line)
{
    if(strpos($line, $lookingfor) !== false)
    {
        $found = true;
        echo $line;
    }
}
if(!$found)
{
    echo    'I found nothing, dood!';
}

目前,该功能运行正常,但仅限于在一个文件中查找单词(“http://iljalicious.net/archiv/2015/juli/eintraege.dat”)。 在我的博客上,我每个月都有这样一个文件,我希望我的searchmachine在目录'../archiv/'和子目录中名为'eintraege.dat'的每个文件中查找单词'2015','2016 '等等。

我该如何解决这个问题?

问候,iljalicious

**** ***** EDIT 找到另一个......愚蠢的解决方案: 代码没有翻译,但与上面相同,我唯一改变的是:

来自:

$ lines = file('../ archiv / 2015 / juli / eintraege.dat');

致:

$ archiv = file('../ suche / archiv.php');

它有效。

$suchbegriff =  $_POST[suchbegriff];

$archiv = file('../suche/archiv.php');

$gefunden =     false;
        foreach($archiv as $zeile)
        {
            if(strpos($zeile, $suchbegriff) !== false)
            {
                $gefunden = true;
                echo $zeile;
            }
        }
        if(!$gefunden)
        {
            echo    '<div class="information">'.
                    'Alter, wonach hast du gesucht?<br>'.
                    'Mhm... Soso, <a>'. $_POST[suchbegriff].
                    '</a> also! '.
                    'Dein Ernst?<br>'.
                    'Als ob ich über sowas berichte O;'.
                    '</div>';
        }

1 个答案:

答案 0 :(得分:1)

您可以尝试使用glob

  

glob()函数搜索匹配模式的所有路径名   根据libc glob()函数使用的规则,即   类似于常见shell使用的规则。

类似的东西:

$file_list = [];
foreach (glob("archive*/eintraege.dat") as $filename) {
    $file_list[] = $filename;
}
$lookingfor = $_POST['word'];

foreach ($file_list as $file) {
    $lines = $file;

    $found = false;
    foreach ($lines as $line) {
        if (strpos($line, $lookingfor) !== false) {
            $found = true;
            echo $line;
        }
    }
    if (!$found) {
        echo 'I found nothing, dood!';
    }
}

注意:glob仅适用于您服务器上托管的文件 因此,如果要从服务器的根目录进行搜索,则函数参数应为:/var/www/site/content/archieve/*/eintraege.dat

如果您要搜索文件的同一文件夹:

*/eintraege.dat