2016-07-05 31 views
0

我想在沒有MySQL的情況下在我的網站上創建一個搜索。在沒有MySQL的我的網站上搜索

我有一個代碼,但它僅搜索一個文件

$query = $_GET["q"]; 
include "date-list.php"; 
$filename = "news/". $news ."/lang.php"; 
$searchfor = "$query"; 
$file = file_get_contents($filename); 
if(strpos($file, $searchfor)) 
{ 
echo "News found found"; 
} 

我會感謝你的幫助。

+1

假設你使用PHP和輸出HTML/PHP的數據,那麼你可能使用'file_get_contents'加載一個文件,然後搜索該生成的字符串。但是請注意,它也會搜索PHP文件的PHP元素,所以你真正想要做的就是開始使用輸出緩衝,或者可能是Curl ...? – Martin

+0

^'file_get_contents'也接受包裝器,以防捲曲不可用。但確實需要啓用'allow_url_fopen'。而且,在這種情況下,xpath可能會有很多幫助。 – Chay22

+0

我只能將這段代碼用於一個文件,但我有很多lang文件,並且我需要搜索它們全部'<?php $ query = $ _GET [「q」]; 包含「date-list.php」; $ filename =「news /」。 $ news。「/ lang.php」; $ searchfor =「$ query」; $ file = file_get_contents($ filename); if(strpos($ file,$ searchfor)) { echo「發現發現的新聞」; } ?>'date-list contains'<?php $ news =「160702」; $ news =「160701」; $ news =「160630」; $ news =「160629」; $ news =「160628」; ?> –

回答

1

,但它僅搜索一個文件

在所有文件只是循環。

將它包裝成一個函數,所以你不需要循環到所有文件。

function wordFoundOnLangFiles($filename, $query) { 
    $filename = "news/". $filename."/lang.php"; 
    $searchfor = "$query"; 
    $file = file_get_contents($filename); 

    return strpos($file, $searchfor !== false) ? true : false; 
} 

創建包含現有郎文件夾名稱的數組,如

$lang = ['en', 'de', 'ru', 'ja', 'ko',]; 

如果是動態創建的那些文件夾,可以使用glob或一個與DirectoryIterator類。

開始循環

function wordFoundOnLangFiles($filename, $query) { 
    $filename = "news/". $filename."/lang.php"; 
    $searchfor = "$query"; 
    $file = file_get_contents($filename); 

    return strpos($file, $searchfor !== false) ? true : false; 
} 

$lang = ['en', 'de', 'ru', 'ja', 'ko',]; 

foreach ($lang as $folder) { 
    if (wordFoundOnLangFiles($folder, $query)) { 
     echo "Word found"; 
    } 
}