[QUIZ#1] CookieBuster (PHP)


CookieBuster

Erfahrenes Mitglied
#1
PHP:
<?php
	error_reporting(0);
	// Die Datei durchgehen und alle Einträge in ein Array speichern
	$Presidents = fopen("presidents.txt", r);
	while(!feof($Presidents)) {
		$PresidentArray[] = fgets($Presidents, 1024);
	}
	fclose($Presidents);	
	
	// Alle Buchstaben klein schreiben
	foreach($PresidentArray As $key => $val) {
		$LowerPresidents[] = strtolower($val);
	}
	
?>

<div style="padding-top:15%;">
	<center>
		<form action="." method="POST">
			Suche: 	
			<input type="text" name="SearchRequest" size="50"> 
			<input type="submit" name="search" value="Suchen">
		</form>
	</center>
</div>

<?php

	// Prüfen ob das Forumlar abgesendet wurde
	if(!isset($_POST['search'])) {return FALSE;}
	
	// Leerzeichen am Anfang und am Ende entfernen
	$SearchRequest = trim($_POST['SearchRequest']);
	
	// Prüfen ob ein Leerer String abgeschickt wurde
	if(empty($SearchRequest)) {return FALSE;}
	
	// Die Länge des Strings speichern
	$Lenght = strlen($SearchRequest);
	
	// Alle Leertasten im String entfernen
	$SearchRequest = str_replace(" ", "", $SearchRequest);
	
	// Alle Buchstaben klein schreiben
	$SearchRequest = strtolower($SearchRequest);

	// Für die Suchanfrage den Default-Offset setzen
	$NextOffset = 0;
	
	// Zählt wie viele übereinstimmungen gefunden wurden
	$Captures = 0;
	
	// Das Outputarray initialisieren
	$Output = array();
	
	// Das Array nach der Zeichenfolge durchsuchen
	
	// Für jedes Array Element
	foreach($LowerPresidents As $key => $val) {
		
		// Für jedes Zeichen in der SearchRequest-Variable
		for($i = 0; $i < $Lenght; $i++) {

			// Prüfen ob das Aktuelle Zeichen Vorhanden ist und die Position als nächstes Offset speichern
			$NextOffset = strpos($val, $SearchRequest[$i], $NextOffset);
			
			// Wenn das Zeichen nicht gefunden wurde beenden
			if($NextOffset === false) {continue;}
			
			$Captures += 1;
			
			if($Captures == $Lenght) {$Output[] = $key; continue;}
			
			$NextOffset++;

		}
		unset($Captures);
	}
	
	// Ausgabe des Ergebnisses
	echo "<center>";
	if(empty($Output)) {echo "<div style='font-size:120%;color:#235;'>Es wurden keine Ergenisse gefunden</div>";return FALSE;}
	foreach($Output As $key => $val) {
		echo "<div style='font-variant:small-caps;font-weight:bold;'>";
		echo $PresidentArray[$val];
		echo "</div>";
		echo "<br />";
	}
	echo "</center>";
?>
Ich sollte noch die Buchstaben markieren...
 
#2
Code:
foreach($PresidentArray As $key => $val) {
        $LowerPresidents[] = strtolower($val);
    }
Warum benutzt du foreach nicht einfach ohne $key? Du verwendest den Key auch nicht bei der ersten Schleife.

Code:
foreach($PresidentArray As $val) {
        $LowerPresidents[] = strtolower($val);
}
Ein wenig viele Array benutzt anstatt ein Array zu befüllen mit den Präsidenten die vorkommen. Aber wenigstens funktioniert es ;) .