Suchen in Strings ?

Hallo,

Ich hab unter PHP ein Array mit Addressdaten also

(„Mr. Flursrt. 2 Hasenhausen …“, „Mr.x2 Bergstr. 5…“)

Ich möchte jetzt dieses Array nach bestimmten zeichen drchsuchen…

Auf Deutsch man soll wie in einer Suchmaschiene darin suchen können also man gibt Berg ein und es wird der 2 Eintrag ausgegeben…

wie geht das so in der Form :

if enthalten ( „berg“, array[1] )
{
echo array[1];
}

VIELEN DANK…
Ps.: Ich hoff ihr versteht meine etwas komische beschreibung…

Gruss Sebastian

Hi Sebastian,
Der einfachste Algorithmus ist „Direct Search“.
Das könnte z.B so aussehen. (Source in C)
Aufruf:

if(enthalten(suchargument)
{
...
}

int enthalten (suchargument) {
 int i,j;
 int p\_size = strlen(suchargument);
 
 for (i=0; i
Dieser Algorithmus ist allerdings performancemässig alles andere als optimal. Wenn Du grössere Datenmengen durchsuchen musst gibt es besser (z.b. Boyer-Moore).
Eine Frage die sich mir aufdrängt:
Wo sind die Daten gespeichert? Wenn Du eine Datenbank verwendest, kannst Du die Abfrage darauf machen und das Suchen entfällt.

Gruss Simon


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>

Eine Frage die sich mir aufdrängt:
Wo sind die Daten gespeichert? Wenn Du eine Datenbank
verwendest, kannst Du die Abfrage darauf machen und das Suchen
entfällt.

Hab das in einer MYSQL Datenbank…
Bräuchte den Code unter PHP ?? Wie mach ich das mit der Datenbank dass er auch Herr Mayer ausgibt wenn ich nach may such ??

Gruss Sebi

Hi Sebastian,

Die Abfrage würde in etwa so aussehen:
select * from xy where name like ‚May%‘

Am Besten wird es sein, wenn Du dich mal intensiver mit SQL auseinander setzt, da dies doch zu den grundlegenden Dingen der Datenbank-Programmierung gehört:
http://www.mysql.com/documentation/mysql/commented/

Gruss
Simon

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

select * from xy where name like ‚May%‘

Der findet jetzt aber nur Mayer wenn das M auch gross ist.
gibt es eine erweiterung dass er Mayer auch findet wenn ich nach may such ??

Hab schon in der Docu gesucht aber nichts gefunden…

Danke,

Gruss Sebi

Nein gibt es leider nicht.
Bei Feldern welche Gross- und Kleinschreibung beinhalten und auch danach gesucht werden kann, habe ich immer folgende Lösung angewendet:

  • Ein zusätzliches Feld in DB einfügen (z.B. suchname)
  • im Feld name den Namen normal abspeichern
  • im Feld suchname alle Kleinbuchstaben durch Grossbuchstaben und alle Umlaute durch ae, oe, ue ersetzen und speichern

Wenn Du nun nach may suchen willst, may durch MAY ersetzen und MAY mit dem Feld suchname vergleichen.

Ist simpel und wirkungsvoll.

Gruss Simon

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]