String im String suchen (genau!)

Moin Forum,

ich rätsel hier grad an einem Problem, wo ich nicht weiterkomme.

Ich habe eine MySQL DB, in der ich mit PHP eine Suche durchführen möchte.
Ich suche in Spalte1 nach einem String, und lese bei Treffer dann aus Spalte2 einen Wert aus.

Ein Beispiel:

Spalte1:

  1. „Schlumpf“
  2. „Schlumpfi - Test“
  3. „Schlumpfinchen“
  4. „Test - Schlumpfi“
  5. „Meine Schlumpfine“

Die Suche z.B. nach „Schlumpfi“ soll als Ergebnis nur die 2. Zeile ausgeben.
Ich habs bisher mit stristr() probiert, der gibt mir aber leider auch
Zeile 3 und 5 mit aus…
Wie kann man sowas umgehen? Die Funktion preg_match() hab ich mir schon angeschaut, komm aber irgendwie nicht klar damit…

Wär schön wenn mir jemand helfen könnte…

lg Micha

Hallo

Ich habe eine MySQL DB, in der ich mit PHP eine Suche
durchführen möchte.
Ich suche in Spalte1 nach einem String, und lese bei Treffer
dann aus Spalte2 einen Wert aus.

Warum machst Du das nicht gleich in SQL? Die DB kann
sowas ganz gut.

Ein Beispiel:
Spalte1:

  1. „Schlumpf“
  2. „Schlumpfi - Test“
  3. „Schlumpfinchen“
  4. „Test - Schlumpfi“
  5. „Meine Schlumpfine“

Die Suche z.B. nach „Schlumpfi“ soll als Ergebnis nur die 2.
Zeile ausgeben.
Ich habs bisher mit stristr() probiert, der gibt mir aber
leider auch Zeile 3 und 5 mit aus…

$liste = Array(
"Schlumpf",
"Schlumpfi - Test",
"Schlumpfinchen",
"Test - Schlumpfi",
"Meine Schlumpfine"
);

$neue\_liste = array\_filter($liste, 'mein\_schlumpf\_test');
print join("\n", $neue\_liste);

function mein\_schlumpf\_test($feld) {
 return preg\_match('/^Schlumpfi\b/', $feld);
}

Entscheidend ist hier das

^Schlumpfi\b

!

Grüße

CMБ

Hallo,

vielen Dank, dein Tipp war goldrichtig. Aber was meinst Du mit „gleich in SQL machen“ ??

Meine Query sieht momentan so aus:

$result = mysql_query("SELECT * FROM " . $AnzTbl[$i] . „“);

wobei $AnzTbl[] ein array mit Tabellennamen ist, in denen ich suche (momentan 3). In jeder Tabelle sind 4 Spalten, die ich durchsuche, jede dieser Spalten hat eine weitere zughörige Ergebnisspalte, aus der ich den Wert bei übereinstimmung der Strings auslese.

Kann man das auch direkt in MySQL machen?

lg Micha

Hallo,

Kann man das auch direkt in MySQL machen?

Etwa so?

 ...

 $tpl = "SELECT \*
 FROM %s
 WHERE spalte1 REGEXP '^Schlumpfi[[:\>:]]'
 ";

 $i = 0;
 $sql = sprintf($tpl, $AnzTbl[$i]);
 $sth = mysql\_query($sql, $dbh);

 while($row = mysql\_fetch\_row($sth)) {
 print join(', ',$row) . "\n";
 }

 ...

(siehe: http://dev.mysql.com/doc/refman/5.1/en/regexp.html )

Grüße

CMБ

Hallöchen,

vielen Dank, der tip ist echt gut. Man lernt nie aus…

lg Micha