ZodiacXP
Erfahrenes Mitglied
Ich hoffe der Code erklärt sich von selbst 
Das ganze kann man ganz kurz und schnell über RegExp lösen:

Das ganze kann man ganz kurz und schnell über RegExp lösen:
PHP:
// Die gesamten Daten auslesen
$sHaystack = file_get_contents("president.txt");
// Hier wird der Suchbegriff festgelegt
$sFind = "JFK";
/* Suchbegriff unscharf machen, indem auch alle Zeichen
* selektiert werden, die nicht einem Umbruch oder Wagenrücklauf
* entsprechen.
*/
$sPattern = "/[^\\r\\n]*" . preg_replace("/([A-Z]|[a-z])\s*/", "$1[^\\r\\n]*", $sFind) . "/s";
// Anwenden auf den ausgelesenen Dateiinhalt
// und alle Fundstellen in $aMatch speichern
preg_match_all($sPattern, $sHaystack, $aMatch);
// Erweiterung
function Extension(&$s, $sKey, $sFind) {
// vorberechnen der Länge für eine schnellere Schleife
$len = strlen($sFind);
// Vorbereitung des Suchergebnisses, damit
// erstes und letztes Zeichen berücksichtigt
// werden können für das folgende Pattern
$s = " ".$s." ";
// Jedes einzelne Zeichen des Suchberiffs durchgehen
for ($i = 0; $i < $len; $i++) {
// Beim ersten vorkommen dieses Zeichens
// im aktuellen Suchergebnis < und > drum herum setzen
$s = preg_replace("/([^<])(".$sFind[$i].")/", "$1<$2>", $s, 1);
}
// aufeinanderfolgende hervorhebungen entfernen (kein "><")
// aus: <F><o><o> wird <Foo>
$s = str_replace("><", "", $s);
// Anfangs gesetzte leerzeichen entfernen
$s = trim($s);
}
// die Funktion für jedes einzelne Element (Suchergebnis) durchlaufen
array_walk($aMatch[0], "Extension", $sFind);
// gewünschte Ergebnis liegt nun in $aMatch[0] bereit
// hier eine kleine Ausgabe:
echo "<pre>";
echo htmlspecialchars(print_r($aMatch, true));
echo "</pre>";
Zuletzt bearbeitet: