Eine simple Suche ohne Cache. Für kleinere Seiten in dieser Form geeignet, größere Seiten sollten Ergebnisse auf jeden Fall zwischenspeichern oder einen Index anlegen.
<?php
/*
Eine simple Suche über HTML-Dateien
Nur für PHP5
Aktion: PHP Scripte für die armen dieser Welt
Der Erlös geht für mein Pausenbrot drauf
Copyright (c) 2006 by Phillip 'Firebird' Berndt
*/
?>
<h1>Suchen</h1>
<form method="get">
<p>
<label>Suchen nach <input name="q" value="<?=htmlspecialchars($_GET['q'])?>"/></label>
<input type="submit" />
</p>
</form>
<?php
if(!$_GET['q'])
die();
?>
<h2>Suchergebnisse</h2>
<ul>
<?php
// Die Suche arbeitet über Verzeichnisse rekursiv, daher muss sie
// in einer Funktion liegen
function search($dir)
{
// Verzeichnis lesen
$odir = new DirectoryIterator($dir);
while($odir->valid())
{
// Dateien mit einem . (In Linux versteckte Dateien) übergehen
if($odir->isDot())
{
$odir->next();
continue;
}
// Verzeichnisse rekursiv aufrufen
elseif($odir->isDir())
search($odir->getPathName());
// In html-Dateien suchen
elseif(preg_match('/\.html?/i', $odir->getFilename()))
{
// Dafür den Textinhalt laden
$content = strip_tags(file_get_contents($odir->getPathName()));
// Darin nach $_GET['q'] suchen und bei Erfolg einen Link ausgeben
if(stripos($content, $_GET['q']) !== false)
echo('<li><a href="'.$odir->getPathName().'">'.$odir->getFilename().'</a></li>'.PHP_EOL);
}
$odir->next();
}
}
search('./');
?>
</ul>