Ergebnis 1 bis 2 von 2

Thema: Seitenindexierungs script

  1. #1
    Azubi(ne)
    Registriert seit
    18.08.2005
    Beiträge
    86
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Seitenindexierungs script

    Huhu!

    Tut mir Leid, dass ich jetz so ein langes Script poste, dass ihr warscheinlich eh nicht lesen werdet aber vlt. hat ja jemand mal Lust drauf ^^.

    Geht um folgendes:

    Das Script soll die Datenfile für eine Volltextsuche (auf einer Homepage) erstellen, was auch relativ gut funktioniert. Nur sitze ich nun schon vergeblich stundenlang am Fehler suchen, weil das Script Verzeichnisse, welche aus nur einem Buchstaben bestehen, überspringt.

    Ich finde den "Fehler" im Script nicht, vlt bin ich auch nur blind :P

    Würde mich freuen wenn jemand Zeit dafür hat.


    so long


    Code:
    <?php
    
    $root_dir = $_SERVER&#91;'DOCUMENT_ROOT'&#93;.$from_dir.'/';
    
    
    // Verzeichnisdurchlauf starten
    if &#40;count&#40;$search_dir&#41; == 0&#41; &#123;
    	walk_dir&#40;$root_dir, 0&#41;;
    &#125; else &#123;
    	foreach &#40;$search_dir as $dir&#41; &#123;
    		walk_dir&#40;$root_dir.$dir.'/', 0&#41;;
    	&#125;
    	// Root durchsuchen, wenn ausgewählt
    	if &#40;$search_rootdir == '1'&#41; walk_dir&#40;$root_dir, 1&#41;;	
    &#125;
    
    
    // Vorhandene Daten-Datei löschen
    @unlink&#40;'search_data.txt'&#41;;
    
    // Inhalte in Datenfile schreiben
    $new_file = fopen&#40;'./search_data.txt', "w+"&#41;;
    fputs&#40;$new_file, $content&#41;;
    fclose &#40;$new_file&#41;;
    
    
    #################################################
    # Function für den Verzeichnisdurchlauf
    function walk_dir&#40;$dir, $rootsearch, $pos=2&#41; &#123;
    	
    	global $root_dir, $ignore_dir, $ignore_dirnames, $dat_type, $no_title, $content, $q, $use_metatitle, $area_description, $area_keywords;
    
    	 $handle = @opendir&#40;$dir&#41;;
    	 while &#40;$file = @readdir &#40;$handle&#41;&#41;
    	 &#123;
    		if &#40;preg_match&#40;"=^\.&#123;1,2&#125;$=",$file&#41;&#41; continue;
    
    		$cut_dir = str_replace&#40;$root_dir, '', $dir&#41;; // Verzeichnisse zum Vergleich anpassen
    		$cut_dir = substr&#40;$cut_dir, 0, -1&#41;;
    	
    		if &#40;in_array&#40;$cut_dir, $ignore_dir&#41;&#41; continue; // zu ignorierende Verzeichnisse auslassen
    		if &#40;preg_match&#40;'=&#40;'.$ignore_dirnames.'&#41;=i', $cut_dir&#41;&#41; continue; // Verzeichnisse mit entsprechenden Namen ausschließen
    
    		if &#40;is_dir&#40;$dir.$file&#41; && !$rootsearch&#41; &#123;
    			walk_dir&#40;$dir.$file.'/', 0, $pos + 3&#41;;
    		&#125;
    		else &#123;
    		#########################################
    		# Seiteninhalte verarbeiten
    		#########################################
    
    		$abs_dir = preg_replace&#40;"=$root_dir=","", $dir&#41;;		// absoluten Pfad ermitteln
    		
    		if &#40;preg_match&#40;"=&#40;\.$dat_type&#41;$=", $file&#41; && $file!="search_data.txt"&#41; &#123;		// wenn eine Datei eine zulässige Endung hat...
    
    			$q++;
    
    			$str = join&#40;"", file&#40;"$dir$file"&#41;&#41;;		// ...Datei einlesen
    
    			if &#40;!preg_match&#40;"=\<\!\-\-.no_search.\-\-\>=siU", $str&#41;&#41; &#123; // auf auszuschließende Seiten prüfen
    
    				$frrepl = array&#40;"=\r\n+=", "=\=", "=.*=siU", "=<script.*>.*<\/script>=siU", "=<style.*>.*<\/style>=siU", "=\|="&#41;;
    				$torepl = array&#40;' ', ' ', '', '', '', 'I'&#41;;
    				
    				$str = preg_replace&#40;$frrepl, $torepl, $str&#41;;
    
    
    				// Titel ermitteln
    				preg_match&#40;"=<title>&#40;.*?&#41;</title>=si", $str, $title&#41;;
    
    				// Meta-Beschreibung ermitteln
    				if &#40;$area_description == '1'&#41; &#123;
    					preg_match&#40;'=<meta.*?name\="description".*?content\="&#40;.*?&#41;".*?\>=si', $str, $descr&#41;;
    				&#125;
    				
    				// Keywords
    				if &#40;$area_keywords == '1'&#41; &#123;
    					preg_match&#40;'=<meta.*?name\="keywords".*?content\="&#40;.*?&#41;".*?\>=si', $str, $keyw&#41;;
    				&#125;
    				
    				// Titel alternativ &#40;Meta-Tag&#41;
    				if &#40;$use_metatitle == '1'&#41; &#123;
    					preg_match&#40;'=<meta.*?name\="psearchtitle".*?content\="&#40;.*?&#41;".*?\>=si', $str, $metatitle&#41;;
    					if &#40;!empty&#40;$metatitle&#91;1&#93;&#41;&#41; &#123; $title&#91;1&#93; = $metatitle&#91;1&#93;; &#125;
    				&#125;
    				
    				$a = preg_replace&#40;"=<title>.*?<\/title>=si", '', $str&#41;; // Titel entfernen
    				$a = preg_replace&#40;"=<\?.*?\?>=s", '', $a&#41;; // PHP-Tags löschen um nur Text zu durchsuchen
    				$a = preg_replace&#40;"=&#40;<&#91;^>&#93;+>&#41;=siU", '', $a&#41;; // Tags löschen um nur Text zu durchsuchen
    
    
    				echo $q.'&#58; '.$dir.$file.'
    ';
    
    				if &#40;!empty&#40;$title&#91;1&#93;&#41;&#41;&#123;		// Title der Seite auslesen
    					$new_title = "$title&#91;1&#93;";
    				&#125;
    				else &#123;
    					$new_title = "$no_title";
    				&#125;
    				
    				$new_path = "/$abs_dir$file";
    
    
    				// Inhalte zusammenfassen
    				if &#40;!preg_match&#40;"=\&#40;\.\*\&#41;|\&#40;\.\*\?\&#41;=", $new_title&#41; && !empty&#40;$a&#41;&#41; &#123;
    					$content .=  preg_replace&#40;"=\s+=", ' ', $new_path.'|'.$new_title.' |'."$descr&#91;1&#93;".' |'."$keyw&#91;1&#93;".' |'.$a&#41;;
    					$content .= "\n";
    				&#125;
    				unset&#40;$str&#41;;
    			&#125;
    			&#125;
    			&#125;
    		&#125;
    		@closedir&#40;$handle&#41;;
    &#125;
    # Funktion ende
    
    ?>
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Forum Guru
    Registriert seit
    28.12.2004
    Ort
    Ringgenberg(bei Interlaken) / Schweiz
    Beiträge
    4.787
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard

    if (preg_match("=^\.{1,2}$=",$file))

    ist wohl overkil...


    mit if ($file=='..' || $file=='.')

    spaarst du resourcen.


    Und das hier ist genaus so ein ding...
    if (preg_match('=('.$ignore_dirnames.')=i', $cut_dir))

    also du hast einige zimlich umständliche und viel zu komplizierte dringe drinn.

    Schonmal was von gehört, so einfach wie möglich zu schreiben.

    Also ich sach mal, so nicht shclecht das script, aber mit eingen kleine änderungen kann man es bis zu 10mla so schnell machen und dazu halt deien fehler auschliessen.

Ähnliche Themen

  1. vb script Ad
    Von Claudia im Forum Forum für alle anderen Programmiersprachen
    Antworten: 1
    Letzter Beitrag: 05.09.2007, 12:54
  2. hilfe bei .pl script online schach script
    Von gast im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 24.05.2007, 22:00
  3. php such-script
    Von blub` im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 01.03.2006, 15:24
  4. Script
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 21
    Letzter Beitrag: 03.10.2005, 23:38
  5. [Script Sonderanfertigung] Wunsch script
    Von hhspre im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 07.01.2005, 17:51

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •