Ich will die Werte die aus einer Datenbank kommen, mittels eines Strings filtern.
Soweit ist das auch kein Problem. Jedoch möchte ich nun noch, dass die übereinstimmenden Stellen hervorgehoben werden. Dies wollte ich mit preg_replace() versuchen, bin jedoch am verzweifeln, da immer nur der letzte Treffer in der Zeichenkette hervorgehoben wird. Hier der Code:
- Code: Alles auswählen
while($user = mysql_fetch_array($result)) {
$pos = stripos($user['name'],$search);
if($pos !== false) {
$pattern = '/(.+)('.$search.')(.+)/i';
$ersetzung = '$1<span style="font-weight:bold">$2</span>$3';
$user['name'] = preg_replace($pattern, $ersetzung, $user['name']);
echo '
<user>
<ID>'.replaceEntities($user['id']).'</ID>
<username>'.replaceEntities($user['name']).'</username>
<IP>'.replaceEntities($user['ip']).'</IP>
<anwesend>'.replaceEntities($user['online']).'</anwesend>
</user>
';
}
}
So wird zum Beispiel für $user['name'] = 'Manuel Mayer' und $search = 'Ma' nur bei Mayer das 'Ma' hervorgehoben. Ich möchte jedoch dass dann beides markiert wird. Ist das möglich? Desweitern gibt es allgemein noch Probleme, denn wenn ich 'Ma' oder 'ma' eingebe, wird nichts hervorgehoben, der Eintrag jedoch gefunden; wenn ich 'an' eingebe, wird dies gefunden und auch hervorgehoben.
Um jegliche Ratschläge wäre ich sehr dankbar
