Supportnet / Forum / Skripte(PHP,ASP,Perl...)
db-suche: definierten string mit suchwort ausgeben
Frage
hi,
letztesmal habe ich hier gute hilfe bekommen. deshalb hier meine nächste problemstellung:
habe eine suche programmiert, die mir eine gewünschte db durchsucht und die ergebnisse darstellt.
ich kann (über ein workaround) auch innerhalb eines datensatzes auf den einzelnen eintrag zugreifen, in dem sich das suchwort befindet. diese einträge sind allerdings sehr lange, so dass ich mir eine weitere verfeierung wünsche.
ich schreib' mal im klartext auf, was diese verfeinerung leisten soll:
entweder sollte das gesuchte wort im ergebnis gehighlightet sein,
oder das suchergebnis bringt mir das suchwort mit 50 zeichen text davor und 50 zeichen text danach, also etwa so:
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla <b>suchbegriff</b> bla bla bla bla bla bla bla bla
wer weiß bescheid?
vielen dank im voraus,
rené
Antwort 1 von semi
$text="abcabcabcTESTabcabcabc";
echo eregi_replace ("(test)", "<b>\\1</b>", $text);
Antwort 2 von bacaribaro
danke zunächst,
aber: wie schneide ich aus 1000 zeichen die 100 relevanten rund um das suchwort aus?
rené
aber: wie schneide ich aus 1000 zeichen die 100 relevanten rund um das suchwort aus?
rené
Antwort 3 von semi
Es gibt sicherlich bessere Lösung aber ohne viel nachzudenken würde ich es wie folgt machen:
Gruß,
Michael
<?php
$text="98765432109876543210test01234567890123456789";
$suchstring = "test";
$lr = 8; // Zeichen links und rechts davon
echo $text . "<br>";
$pos1 = strpos($text, $suchstring);
if($pos1 != false) {
$pos1 = (($pos1-$lr)<0)?0:($pos1-$lr);
$result = substr($text, $pos1, 2*$lr + strlen($suchstring));
$result = eregi_replace ("(test)", "<b>\\1</b>", $result);
echo $result . "<br>";
exit;
}
echo "Nicht gefunden.";
?>
Gruß,
Michael

