Hallo Leute,
also ich hab eine kleine php Funktion geschrieben welche mir bei einer Suche hilft.
Und zwar markiert mir diese Funktion den String, den er in einem anderen String findet, golden.
Ich hab diese Funktion geschrieben weil ich keine gefunden habe die das für mich erledigt, ohne das Problem mit der Zeichenkodierung.
Wenn nämliche Umlaute verglichen werden müssen, klappt das ganze nicht mehr.
Ich hab schon sämtliches Probiert doch es will einfach nicht klappen.
Könnt ihr mir helfen?
Hier die Funktion:
PHP
// $str1 = Eingegebener Suchtext
// $str2 = Zu durchsuchender String
function highlight($str1, $str2) {
$result = "";
// Speichere zu durchsuchenden String
$strN = $str2;
// Alle Buchstaben klein machen damit es keine Probleme zwischen Klein- und Großbuchstaben gibt
$str1 = strtolower($str1);
$str2 = strtolower($str2);
// Speichere Position von String1 in String2
$pos = strpos($str2, $str1);
// Speichere Zeichenlänge von String2
$strlen = strlen($str2);
// Wenn Eingegebener Suchtext nicht Anfang ist vom zu durchsuchenden String,
// springe zur übereinstimmenden Stelle..
if ($pos !== 0) {
for ($t = 0; $t < $strlen; $t++) {
if (isset($str1[$t])) {
if ($str1[$t] != $str2[$t]) {
$str1 = ' '.$str1;
}
}
}
}
// Überprüfe Zeichen für Zeichen und markiere übereinstimmende Zeichen golden
$j = 0;
for ($i = 0; $i < $strlen; $i++) {
if (isset($str1[$i])) {
if ($str1[$j] == $str2[$i]) {
$result .= '<font color="#DAA732">'.$strN[$i].'</font>';
}
else if ($str1[$j] != $str2[$i]) {
$result .= $strN[$i];
}
$j++;
} else {
$result .= $strN[$i];
}
}
return $result;
}
Alles anzeigen
Die Idee ist ja, dass egal wie beide Strings reinkommen, beide so gestellt werden müsse,
dass die Funktion mit beiden arbeiten kann..
Danke für Hilfe.