Hallo zusammen,
der unten abgebildete Code ist eine Suchmaschine für die angegebenen Verzeichnisse. Die Maschine durchsucht allerdings nur den HTML-Teil der php-Seiten.
Kann man das umschreiben, dass die geparste php-Seite durchsucht wird. Hat folgenden Hintergrund: Ich hab einen Login-Bereich und möchte, dass wenn der User eingeloggt ist, dass er dann die "internen" Seiten auch durchsuchen kann.
Nächste Frage: Kann man das so schreiben, dass alle Meta-Angaben ignoriert werden? Dass z.B. Nur der Titel und der Body durchsucht werden?
Würde mich tierisch freuen, wenn mir jemand mehr als nur "Ja, ist möglich!" zurückschreiben würde!
Danke für Eure Bemühungen
Tom1tk
// ***** konfigurierbare parameter *****
$aPath = array ('../ordner' ); // welche verzeichnisse sollen durchsucht werden
$aExtension = array ( '.php' ); // welche dateitypen sollen durchsucht werden
// ***** ende konfiguration *****
$sUL = '';
// search file
function searchFile($sPath) {
global $sUL;
global $search;
global $sLinkAttrib;
$sFile = strip_tags(join('',file($sPath)),'<title>,<meta>');
if (stristr($sFile, $search)) {
eregi('(<title>)([^<]+)', $sFile, $aParts);
if ($aParts[2]) {
$sUL .= "<li><a href='".$sPath."' ".$sLinkAttrib.">".$aParts[2]."</a>\n";
}
else {
$sUL .= "<li><a href='".$sPath."' ".$sLinkAttrib.">".basename($sPath)."</a>\n";
}
}
}
// scan directory
function scanDir($sDir) {
global $aExtension;
// create dir object
$oDir = dir($sDir);
// loop over all files
while ($sEntry = $oDir->read()) {
$sPath = $sDir.'/'.$sEntry;
if (! is_dir($sPath)) {
reset ($aExtension);
while (list($sKey, $sExt) = each($aExtension)) {
if (strtolower(substr($sPath, -1 * strlen($sExt)) == strtolower($sExt))) {
searchFile($sPath);
}
}
}
}
$oDir->close();
}
// suchbegriff vorhanden ?
if (isset($search) and (trim($search) != '')) {
// scan all directories
while (list($sKey, $sName) = each ($aPath)) {
scanDir($sName);
}
}
//Ausgabe
print $sUL;