Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

suchergebnis in einem string kenntlich machen

0 views
Skip to first unread message

Carsten Wilke

unread,
Aug 3, 2000, 3:00:00 AM8/3/00
to
Nabend allerseits!

Tabelle:
Nr (inkr, primarykey) feld1
1 blabla_ds_1
1 blabla_ds_1
1 blabla_ds_1
1 blabla_ds_1
1 blabla_ds_1
Also suche jetzt nach "select * from tabelle where feld1 like
"%$meinesuche%"
Wenn er was findet, hätte ich gerne als suchergebnis folgendes:


Carsten Wilke

unread,
Aug 3, 2000, 3:00:00 AM8/3/00
to

Tabelle:
Nr (inkr, primarykey) feld1
gruppe
1 test_ds_1
1
2 test_ds_2
1
3 test_ds_3
2
4 test_ds_4_hier_test
2
5 test_ds_5
3
6 test_ds_6
3
7 test_ds_7
3
8 test_ds_8
3

$meinesuche="hier";


Also suche jetzt nach
"select * from tabelle where feld1 like "%$meinesuche%"

Wenn er was findet, hätte ich gerne als suchergebnis folgendes:

Er soll mit dem text von dem DS vorher anfangen, dann den gefundenen ds,
wobei $meinsuche fett sein soll, und schließt ab mit einem DS danach. Also:
Suche nach $meinesuche:
test_ds_3 test_ds_4_<b>hier</b>_test test_ds_5

Also DS vorher und nachher finden ist ok, aber wie krieg ich das hin, das er
nur den suchbegriff fett zeigt?

Und jetzt ist das große Problem, das mal 20 Buchstaben in einem Feld sind,
einmal zehn,einmal 50 usw. Wie krieg ichs hin, das er immer 20 Buchstaben
vor dem $meinesuche und 20 buchstaben nach $meinesuche hinkriegt?

Danke vorab, Carsten


Philipp Imhof

unread,
Aug 4, 2000, 3:00:00 AM8/4/00
to
Hi Carsten

> $meinesuche="hier";
> Also suche jetzt nach
> "select * from tabelle where feld1 like "%$meinesuche%"
das ist schon mal gut

> Also DS vorher und nachher finden ist ok, aber wie krieg ich das
hin, das er
> nur den suchbegriff fett zeigt?

am einfachsten machst du folgendes:
print($datensatz_vorher);
print("<p>$datensatz_treffer</p>");
print($datensatz_nachher);

> einmal zehn,einmal 50 usw. Wie krieg ichs hin, das er immer 20
Buchstaben
> vor dem $meinesuche und 20 buchstaben nach $meinesuche hinkriegt?

die funktion heisst substr --> manual

hoffe, geholfen zu haben
cu
fippu.ch

Johann-Peter Hartmann

unread,
Aug 5, 2000, 3:00:00 AM8/5/00
to
Hallo Carsten,

Carsten Wilke <c-w...@gmx.de> schrieb:

> Und jetzt ist das große Problem, das mal 20 Buchstaben in einem Feld
sind,

> einmal zehn,einmal 50 usw. Wie krieg ichs hin, das er immer 20
Buchstaben
> vor dem $meinesuche und 20 buchstaben nach $meinesuche hinkriegt?


# wo beginnt der zu findende string $searchterm im result
$foundstring, wenn vorhanden ?

if
($startpos=strpos(strtolower($foundstring),strtolower($searchterm) ))
{

# das erste Zeichen, dass ich anzeigen will, ist entweder 20 Zeichen
# vor dem Suchbegriff oder das erste Zeichen des Results,
# wenn weniger als 20 Zeichen vor dem Suchbegriff sind.

$firstchar = ($startpos>=20) ? ($startpos-20 ) : $startpos;

# wir wollen den Suchbegriff, und 20 Zeichen vorher und nachher
# ausgeben. Deshalb holen wir einfach 40+Suchwortlänge Zeichen
# aus dem Result . Und machen ein "..." davor und dahinter, weil
# es schöner aussieht. Achtung: Hier wird gemogelt, der substr
# kann mehr Zeichen aus $foundstring verlangen, als tatsächlich
# vorhanden sind. Aber hej, das hier ist PHP und nicht Java.

$foundstring="...".substr($foundstring, $firstchar,
strlen($searchterm)+40)."...";

# Mach das Suchwort fett, los !

$foundstring=preg_replace("/(".$searchterm.")/msiU","<b>\\1</b>",
$foundstring );

# wenn nichts gefunden wurde ...

} else $foundstring="Leider nichts gefunden.<br>";


0 new messages