Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Ergebnisse von MySQL formatieren





Frage

Hallo allerseits. Habe eine Frage zu meinem Neugriechisch Lexikon. Und zwar: Wenn jemand nach einem Begriff sucht, soll in allen Ergebnissen, die gefunden werden, der Teil in Bold erscheinen, nach dem gesucht wurde. Wenn z.B. jemand nach "Haus" sucht, soll da kommen: Kranken[b]haus[/b] Habe dazu folgendes: [code]$data['deutsch'] = str_replace($_GET['search'], "<b>".$_GET['search']."</b>", $data['deutsch']); [/code] Problem dabei ist aber, dass er zwar dann Kranken[b]haus[/b] anzeigt, aber das exakte Ergebnis, nämlich "Haus" wird nicht in Bold angezeigt. Liegt wohl an der Großschreibung. Kann mir jemand helfen? Grüße und Dank, Üsch

Antwort 1 von gresti

Hi Üsch,

ich bin da der Meinung das du da noch was in deiner Table hinterlegen musst,
Ich würde da ne PHP Lösung anstreben,
SQL ist ja lediglich eine Datenbank.

lg gresti

Antwort 2 von katy

Hallo Üsch,

da böte sich dann natürlich preg-replace an mit einem entsprechenden Suchmuster, das Groß/Kleinschreibung ignoriert.

katy

Antwort 3 von Uesch

@gresti: Danke, aber was meinst du mit PHP-Lösung?

Gruß,

Üsch

Antwort 4 von katy

@gresti und Üsch

verstehe ich euch nur falsch? Meiner Ansicht nach dreht es sich doch nur um PHP. MySQL hat mit dem beschriebenen Problem nichts zu tun, das ist doch lediglich PHP-Stringverarbeitung. Oder? Ich verstehe nämlich weder was grestis Antwort mit dem Problem zu tun hat (Table?) noch Üschs Nachfrage.

katy

Antwort 5 von Uesch

Ja eben genau deshalb hab ich ja nachgefragt, weil das, was ich im ersten Beitrag geschrieben habe, ja PHP ist. MySQL hat nix mit dem Problem zu tun, es geht nur darum, wie man in PHP am besten den gesuchten Teil in Bold darstellen kann. Das mit dem preg_replace hab ich nicht ganz verstanden, kann mir da jemand ein Beispiel geben?

Antwort 6 von katy

Hallo Üsch,

irgendwie beruhigt mich deine Antwort.
Ein Versuch wäre erst einmal folgendes:
$suchmuster = '/('.$_GET['search'].')/gi';
$ersetzungen = '<b>'.$1.'</b>';
$data['deutsch'] = preg_replace($suchmuster, $ersetzungen, $data['deutsch']);
ohne Garantie, da meine PHP-Kenntnisse noch mangelhaft sind.

Viel Erfolg

katy

Antwort 7 von katy

hm, habe gerade noch ein wenig darüber gegrübelt, ich glaube Ersetzungen muss ein bisschen anders aussehen:
$ersetzungen = '<b>$1</b>
';
($1 ist das was im Suchmuster als zutreffend gefunden wird, dort besagen die Parameter gi dass alle Vorkommen des Ausdrucks unabhängig von Groß/Kleinschreibung ersetzt werden soll. Die / begrenzen ein Suchmuster, die () besagen, dass das was darin steht dem $1 entspricht.
Zumindest habe ich das so verstanden und ich hoffe, dass es stimmt und du meinen Ausführungen folgen kannst.

katy

Antwort 8 von Uesch

Ah, ok, ich verstehe.
Ich werde es morgen mal ausprobieren und melde mich dann.

Vielen Dank,


Üsch

Antwort 9 von Uesch

Da kommt:

Warning: preg_replace() [function.preg-replace]: Unknown modifier 'g' in index.php on line...


also in der Zeile
$data['deutsch'] = preg_replace($suchmuster, $ersetzungen, $data['deutsch']);


Was ist mit dem Modifier g gemeint?

Antwort 10 von katy

Hallo Uesch,

g bedeutet "alle Vorkommen".
Aber vielleicht interpretiert preg_replace das so nicht (ist eigentlich PERL-Syntax), also lass das g mal weg.

katy

Antwort 11 von Uesch

Absolut genial,

vielen Dank Katy!
Ohne das g klappt es wunderbar.


Schönen Gruß,

Üsch

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: