2016-07-27 27 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

相關問題