PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Suchfunktion und Sonderzeichen (http://www.selfphp.de/forum/showthread.php?t=11782)

morsche 24.11.2005 04:02:45

Suchfunktion und Sonderzeichen
 
Schönen guten Morgen,

ich möchte eine veraltete Suchfunktion etwas aufbessern und zwar zum einen alle Leer- und Sonderzeichen bei der Suche ignorieren und zum anderen das gefundene Fragment einfärben.
Der erste Schritt funktioniert wunderbar - es wird alles gefunden, egal ob ich in der Suche irgendwo Leerzeichen, Punkte oder andere Sonderzeichen eingebe oder eben diese Zeichen irgendwo im Datensatz stehen. Das läuft alles schon in SQL ab.

Nur beim Einfärben mit PHP tue ich mir noch etwas schwer. Bis jetzt lösche ich sowohl aus Suchanfrage als auch aus dem Datenfeld alle zu irgnorierenden Zeichen raus und Suche dann per eregi() nach dem Suchstring im Datenfeld. Wenn etwas gefunden wird, stelle ich den HTML-Code für die Umfärbung vor und nach das gefundene Fragment.
Das Problem ist nur, dass mir dabei natürlich im Falle eines Sucherfolges alle Zeichen rausfliegen (v.a. bei den Leerzeichen sehr nervig). Ich möchte also das ursprüngliche Erscheinungsbild beibehalten und gleichzeitig den HTML-Code für die Einfärbung an die richtige Stelle setzen.

Meine Idee war, zu versuchen rauszufinden, wo mein gefundenes Fragment beginnt und wo es endet und entsprechend die HTML-Tags zusetzen. Dafür also temporär das Datenfeld in einer Variable ohne Sonderzeichen abspeichern, durchsuchen, Position speichern und dann auf das ursprüngliche Datenfeld wie oben beschrieben anwenden. Für die Startposition funktioniert das natürlich, aber die Endposition kann ich nicht klar definieren, da ich ja in dem String, in dem ich die Position ermittle die Sonder- und Leerzeichen entfernt habe, wodurch möglicherweise Text-Teile nach vorne rutschen, falls Zeichen im Bereich des Suchstrings gelöscht wurden.

Ich schätze, dies ist der falsche Weg. Ich weiß aber nicht mehr weiter - kann mir jemand helfen?

Danke schonmal ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:40:38 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.