2016-07-27 29 views
0

我正在为我的博客(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实测值 笨溶液another..kind: 的代码不被翻译,但是与上述相同,我改变的唯一事情是:

来自:

$线=文件( '../档案馆/ 2015 /巨力/ eintraege.dat');

到:

$档案馆=文件( '../ 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>'; 
     } 
+0

参见[' scandir'](http://php.net/manual/en/function.scandir.php) –

+0

你有你的应用程序上下文中的所有文件的列表(在变量,文件或其他)? –

+0

Btw。请为数组键'$ _POST ['word']'使用单引号以避免通知。 –

回答

1

您可以尝试使用glob

The glob() function searches for all the pathnames matching pattern according to the rules used by the libc glob() function, which is similar to the rules used by common shells.

事情与此类似:

$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!'; 
    } 
} 

注意:只与您的托管服务器上的文件水珠工作。
所以,如果你想从你的服务器的根目录进行搜索,该函数的参数应该是这样的:/var/www/site/content/archieve/*/eintraege.dat如果你想在你的文件相同的文件夹进行搜索

*/eintraege.dat 
+0

谢谢! 这看起来像它可能是我需要的,但我已经在第一行代码中出现错误。 解析错误:语法错误,意外的'['... 我不是专家,但我想了解所有这些工作..或不工作。 – iljalicious

+0

你使用哪种版本的php?这只是一个空数组声明。尝试使用$ file_list = array(); –

+0

即时通讯使用PHP v5.3.29,我试着用你说的,但我得到这个:“警告:为foreach()提供的无效参数”(http://iljalicious.net/suche/) – iljalicious

相关问题