[QUIZ#1] Mark (PHP)

Mark

Cinema4D
Hi Ihr Lieben!

Args, ich habe mich hierher total verlaufen: als Pixelschubser hätte ich mich sicher nicht an Php heran wagen dürfen, aber Cinema4Ds Coffee oder XPresso wären doch ein wenig überfordert gewesen ;) ... somit mein kleiner Versuch:

PHP:
<?php
echo "tutorials.de Coding-Quiz #1 - Unscharfe Suche<br /><br />\n";

//	Markierungs-Tags							
define("M_START", "<b>");
define("M_ENDE", "</b>");

//	Sucheingabe per Html-Form 					
$suche = $_GET['suche'];
echo '<form><input type="text" name="suche" value="' . $suche .'" /></form>' . "\n";

//	Einlesen der Fundstücke 					
$praesidenten = file('presidents.txt');
$praesidenten = array_map('trim', $praesidenten);

//	Leerzeichen entfernen & Kleinschreibung		
$suche = str_replace(' ', '', $suche);
$suche = strtolower($suche);

#	Kein Suchbegriff							
if (!$suche) {
	print 'Bitte Suchbegriff eingeben.';

#	Unscharfe Suche								
} else {
	$count = 0;
	//	Durchlaufen aller Präsidenten 			
	foreach($praesidenten as $praesident) {
		//	Treffer 							
		if (preg_match_all('/.*?'.implode('.*?', str_split($suche)).'.*?/i', $praesident, $treffer)) {
			$position = 0;
			$Apraesident = str_split($praesident);
			//	Markiere die Suchbuchstaben		
			foreach(str_split($suche) as $buchstabe) {
				$position = stripos($praesident, $buchstabe, $position);
				$Apraesident[$position] = '[Mstart]' . $Apraesident[$position] . '[Mende]';
				$position++;
			}
			//	Doppelte MTags entfernen		
			$markiert = preg_replace('/\[Mstart\]\[Mende\]/', '', implode('', $Apraesident));
			//	MTags ersetzen & Ausgabe		
			echo preg_replace(array('/\[Mstart\]/', '/\[Mende\]/'), array(M_START, M_ENDE), $markiert) . "<br />\n";
			$count++;
		}
	}
	echo ($count ? $count : 'Keine') . ' Treffer';
}

?>

Gerade den "Zusatz" hatte ich versucht mit einer RegExp hinzubekommen, bin aber kläglich gescheitert (auch schon bei der ersten ReqExp dürfte es einigen den Magen umdrehen ;) ), deshalb diese Buchstabe pro Buchstabe-Markierung (die dann erst im nachhinein aufgeräumt wird)...

Ich hoffe, das Teil macht zumindest was es soll und ich bin schon tierisch gespannt, mit welchen wunderbaren Algorithmen die Mitbewerber so alles auftrumpfen! :)

Liebe Grüße,
Mark.
 
auch schon bei der ersten ReqExp dürfte es einigen den Magen umdrehen

Ganz und garnicht ^ ^
Meine Lösung hat auch ziemlich übers Knie gebrochene Pattern. Hauptsache Funktioniert ;)

Find deine Lösung richtig gut. Aber jeder hat am Ende die doppelte Markierung gehabt oder? :D
 
Zurück