Guten Abend,
ich benutze das Suchskript von http://www.planetc.de/download/planetsearch/planetsearch.html. Jedoch will ich die Suchergebnisse natürlich sortieren lassen. Dafür habe ich “rsort” gegen “natcasesort” ersetzt. Leider hat sich die Sortierung nicht geändert.
Woran liegt das? Falsche Funktion? Habe ich etwas übersehen?
Danke im Voraus.
Gruß Elsner
[code]<?php
#############################
include ("./_bausteine/suche/config.inc.php");
#############################
$root_dir = $_SERVER[“DOCUMENT_ROOT”].$from_dir."/";
@setlocale(“LC_ALL”, “de_DE”);
Suchbegriff(e) übernehmen und umwandeln
$search_exp = strip_tags($_POST[“search_exp”]);
#############################
#Prüfen, ob ein Suchbegriff eingegeben wurde
if (!empty($search_exp)) {
Sonderzeichen entfernen
$frrepl = array("=+=", “=\s+=”);
$torepl = array("", " ");
$search_exp = preg_replace( $frrepl, $torepl, $search_exp);
$search_exp = preg_quote($search_exp);
$search_exp = trim($search_exp);
Zeichenanzahl des Suchbgeriffes prüfen
if (strlen($search_exp) < $sexp_length) {
// Template laden
$tmpl = join(’’, file("./_bausteine/suche/suchfehler.php"));
$tmpl = preg_replace("=[search_error_count]=", $error_count, $tmpl);
$tmpl = preg_replace("=[search_error_empty]=", “”, $tmpl);
eval(’?>’ . $tmpl);
} else {
Suchbegriffe in Array umwandeln und zählen
$search_arr = explode(" ",$search_exp);
$search_count = count($search_arr);
“Dummy”-Array für Such-Array erzeugen
$arr = array();
$arr_all = array();
Template laden
$tmpl = join(’’, file("./_bausteine/suche/suchergebnis.php"));
Bereich der Trefferanzeige aus dem Template ziehen
preg_match_all("=[SEARCH_START](.*)[SEARCH_STOP]=siU", $tmpl, $between);
$search_pages = 0;
$cont_part = walk_dir($root_dir); // Verzeichnisdurchlauf starten
$search_pages = count($cont_part); // Anzahl der Trefferseiten
natcasesort($cont_part); // Array sortieren
for ($j=0; $j<$search_pages; $j++) { // Arrays auslesen
list($anz_searchexp, $title, $descr, $new_path) = $cont_part[$j];
$content = preg_replace("=[SEARCH_TITLE]=", “$title”, $between[1][0]);
$content = preg_replace("=[SEARCH_LINK]=", “$from_dir”."$new_path", $content);
$content = preg_replace("=[SEARCH_DESC]=", “$descr”, $content);
$content = preg_replace("=[SEARCH_COUNT]=", “$anz_searchexp”, $content);
$cont_x .= $content;
}
// Suchergebnis zusammenstellen und anzeigen
$tmpl = preg_replace("=[SEARCH_START](.*)[SEARCH_STOP]=siU", $cont_x, $tmpl);
$search_exp = str_replace(’\’, ‘’, $search_exp);
$tmpl = preg_replace("=[SEARCH_WORDS]=", $search_exp, $tmpl);
$tmpl = preg_replace("=[SEARCH_PAGES]=", $search_pages, $tmpl);
if (empty($cont_part)) {
$tmpl = preg_replace("=[NO_MATCH]=", $no_match, $tmpl);
} else {
$tmpl = preg_replace("=[NO_MATCH]=", “”, $tmpl);
}
eval(’?>’ . $tmpl);
#################################################
Logdatei schreiben
foreach ($search_arr as $search_exp) {
$zeilen = file("./_bausteine/suche/_log/search_log.txt");
$anz_zeilen = sizeof($zeilen);
$x=0;
Datenfile auslesen
for ($i=0; $i<$anz_zeilen; $i++) {
list ($search_word, $search_num) = split("\\|", chop($zeilen[$i]));
// wenn Suchbegriff gefunden wird
if ($search_exp==$search_word) {
$search_num++;
$i-2;
$x++;
}
$new_log .= "$search_word|$search_num\n";
}
// wenn der Suchbegriff nicht schon geloggt wurde
if ($x==0) {
$search_num = “1”;
$new_log .= “$search_exp|$search_num\n”;
}
$data = fopen("./_bausteine/suche/_log/search_log.txt",“w+”);
flock($data,1);
fwrite($data, $new_log);
flock($data,3);
fclose($data);
unset($new_log);
}
#################################################
}
}
#############################
Wenn kein Suchbegriff eingegeben wurde
else {
# Template laden
$tmpl = join(’’, file("./_bausteine/suche/suchfehler.php"));
$tmpl = preg_replace("=[search_error_count]=", “”, $tmpl);
$tmpl = preg_replace("=[search_error_empty]=", $error_empty, $tmpl);
eval(’?>’ . $tmpl);
}
#############################
#################################################
Function für den Verzeichnisdurchlauf und die Trefferermittlung
function walk_dir($dir, $pos=2)
{
global $search_exp, $search_arr, $search_count, $arr, $ignore_dir, $dat_type, $root_dir, $search_area, $cont_part, $no_title, $search_pages, $arr_all;
$handle = @opendir($dir);
while ($file = @readdir ($handle))
{
if (preg_match("=^\.{1,2}$=",$file))
{
continue;
}
$cut_dir = preg_replace("=$root_dir=siU", "", $dir); // Verzeichnisse zum Vergleich anpassen
if (in_array($cut_dir, $ignore_dir)) continue; // zu ignorierende Verzeichnisse auslassen
if (preg_match('=(_vti_cnf|_notes)=i', $cut_dir)) continue;
if(is_dir($dir.$file))
{
walk_dir($dir.$file."/", $pos + 3);
}
else
{
#########################################
# Suche und Trefferanzeige
#########################################
$abs_dir = preg_replace("=$root_dir=","",$dir); // absoluten Pfad ermitteln
if (preg_match("=(\.$dat_type)$=",$file)) { // wenn eine Datei eine zulässige Endung hat...
$str = join('', file("$dir$file")); // ...Datei einlesen
if (!preg_match("=\<\!\-\-.no_search.\-\-\>=siU", $str)) { // auf auszuschließende Seiten prüfen
$str = ch_uml($str); // Umlaute verarbeiten
// Titel ermitteln
preg_match("=<title>(.*)</title>=siU", $str, $title);
// Meta-Beschreibung ermitteln
preg_match('=<meta.*name\="description".*content\="(.*)".*>=siU',$str,$descr);
// Keywords
preg_match('=<meta.*name\="keywords".*content\="(.*)".*>=siU',$str,$keyw);
// zu durchsuchender Bereich
if ($search_area==1) { // Titel, Description, Keywords
$a = "$title[1]"."$descr[1]"."$keyw[1]";
}
else { // alles
$str = preg_replace("=\<\!\-\-.no_search_start.\-\-\>.*?\<\!\-\-.no_search_stop.\-\-\>=s", "", $str);
$a = preg_replace("=<script.*>.*<\/script>=siU", "", $str); // JavaScript-Code entfernen
$a = preg_replace("=<\?.*?\?>=s", "", $a); // PHP-Tags löschen um nur Text zu durchsuchen
$a = preg_replace("=(<[^>]+>)=siU", "", $str); // Tags löschen um nur Text zu durchsuchen
$a .= "$title[1]"."$descr[1]"."$keyw[1]";
}
$i=0;
foreach ($search_arr as $search_word) { // jeden Suchbegriff prüfen
if (preg_match("=($search_word)=i", $a)) { // wenn Suchbegriff vorkommt...
$anz_searchexp += preg_match_all("=$search_word=siU", $a, $nullinger);
$i++; // i für jeden gefundenen Suchbegriff erhöhen
if ($i==$search_count) { // wenn ALLE Suchbegriffe gefunden wurden...
if (!empty($title[1])) // Title der Seite auslesen
{
$new_title = "$title[1]";
$new_path = "/$abs_dir$file";
}
else {
$new_title = "$no_title";
$new_path = "/$abs_dir$file";
}
if (!empty($descr[1])) // description auslesen
{
$new_descr = "$descr[1]";
}
else {
$new_descr = "";
}
if (!preg_match("=^\(\.\*\)$=", $new_title)) {
$s_show = array();
$s_show[] = $anz_searchexp;
$s_show[] = $new_title;
$s_show[] = $new_descr;
$s_show[] = $new_path;
array_push($arr_all, $s_show);
}
unset($str, $anz_searchexp);
}
}
}
}
}
#########################################
#########################################
}
}
$cont_part = $arr_all;
return ($cont_part);
@closedir($handle);
}
Funktion ende
#################################################
// Umlaute bearbeiten
function ch_uml($del_uml) {
$del_uml = preg_replace("=ä=", “ä”, $del_uml); // Umlaute und ß
$del_uml = preg_replace("=ö=", “ö”, $del_uml);
$del_uml = preg_replace("=ü=", “ü”, $del_uml);
$del_uml = preg_replace("=Ä=", “Ä”, $del_uml);
$del_uml = preg_replace("=Ö=", “Ö”, $del_uml);
$del_uml = preg_replace("=Ü=", “Ü”, $del_uml);
$del_uml = preg_replace("=ß=", “ß”, $del_uml);
return ($del_uml);
} // end func
#################################################
?>[/code]