我正在为我的博客(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>';
}
答案 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