[QUIZ#1] Jacka (PHP)

Jacka

Erfahrenes Mitglied
Hallo zusammen,

Kommandozeilenprogramm zum Quiz#1 "Unscharfe Suche" in PHP:
PHP:
<?php
/*
 *   Kommandozeilenprogramm [Quiz#1] "Unscharfe Suche"
 *   Dateiname: suche.php
 *   Erstellt von: Jacka 
 *   Datum: 19.08.08   
 *   Aufruf im PHP-Verzeichnis: php -f suche.php "[Suchtext]"
 */ 
	
	if(empty($argv[1])) {
		echo "Keine Eingabe!"; // Wenn kein Parameter angegeben
	}
	else {
		echo "\n Suchergebnis: \n";
		echo UnscharfeSuche($argv[1], "presidents.txt"); // Funktion aufrufen			
	}

function UnscharfeSuche($suchstr, $datei) {
	$suchfeld = ImportText($datei); // Suchfeld einlesen
	
	if(empty($suchfeld)) {
		return "Kein Suchfeld vorhanden!"; // Wenn Textdatei leer, Fehler ausgeben
	}
	else {				
		$laenge = strlen($suchstr); // Länge des Suchstrings 	
		
		for($y=0;$y<count($suchfeld);$y++) {
			$pos = 0; // Position auf 0 setzten
			$lenIndex	 = 0; // Längenindex auf 0 setzten
			
			for($i=0;$i<$laenge;$i++) {
				$pos = strpos($suchfeld[$y],$suchstr[$i],$pos); // Suche Buchstabe im Text ab Position x
				$pos++; // Position um eins erhöhen
				
				if(!empty($pos)) {				
					$lenIndex++; // lenIndex um eins erhöhen, wenn Position vorhanden
				}					
			}
						
			if($lenIndex == $laenge) { // Alle Zeichen gefunden?
				$result .= $suchfeld[$y]."\n";		
			}			
		}
		
		if(!empty($result)) {
			return $result; // Ergebnisrückgabe
		}
		else {
			return "Keine Uebereinstimmung gefunden!";	// Kein Suchergebnis
		}
	}
}

function ImportText($datei) {	
	if(file_exists($datei)) {	
		$zeiger = fopen($datei, "r");
		
		while(!feof($zeiger)) {
			$txtArray[] = fgets($zeiger); // Zeilenweise auslesen in array
		}
		fclose($zeiger); 	
		
		return $txtArray;
	}
}

?>
 
Zuletzt bearbeitet:

Jacka

Erfahrenes Mitglied
Hi!

Danke für die Kommentare!

Lass ihm den Spaß!
Äh.. also wenn dann bitte "Lass ihr den Spaß" :)

Ich mache das auch oft so - alte C-Gewohnheiten. Außer er weiß nicht das es anders geht - deswegen nochmal der ausführliche Link zur Manual: File()

Natürlich kenne ich File(). Ich hatte mir nur die Funktion aus Bequemlichkeit aus einer meiner anderen Anwendungen kopiert, bei der eine etwas andere Fragestellung Gegenstand war. Also einfach gesagt, das viel mir als erstes ein und ich war zu faul nochmal darüber nachzudenken. :-(

Vielen Dank und Grüße,
Jacqueline
 

Dennis Wronka

Soulcollector
Ohne jetzt mal den Code genauer angesehen zu haben ist mir aufgefallen dass Du erst den Hauptteil des Programmes schreibst und dann die Funktionen.

Das mag nun durchaus funktionieren, meiner Meinung nach ist es aber schoener wenn man erst die Funktionen deklariert und dann nutzt, also z.B. sowas:
PHP:
<?php
function a()
{
 //irgendwas
}

function b()
{
 //irgendwas anderes
}

a();
b();
?>

Ein Vorteil hierbei ist auch dass man dadurch den Vorteil hat beim Umstieg auf eine andere Programmiersprache nicht wie der Ochs vorm Berg zu stehen wenn es aufgrund der Reihenfolge nicht klappt. Andere Sprachen achten naemlich durchaus auf sowas.